Création d'un objet par webservice et objet lié

Bonjour,

En 4.0 patch level P23 (database patch level P23) :

Je cherche à créer un objet par webservice (l’objet CrbFopStagiaire), qui a une clé vers un autre objet (CrbFopIndividu).

Lors de ma requête POST de création, les attributs de l’objet CrbFopStagiaire prennent bien la valeur qu je leur donne en paramètre, mais pas l’attribut correspondant à la clé (cf. copie d’écran).

J’ai essayé de retirer les guillemets dans la valeur du champ, et de compléter le attribut obligatoires de l’objet lié, même problème.

J’ai également mis des traces de debug dans mon hook prevalidate : fopStagiaireIndividu_fk a une valeur nulle.

Avez-vous une solution à ce problème ?

Merci d’avance,

Guillaume

Attention : avec les webservices REST utiliser les row IDs est obligatoire dans tous les cas.

Les webservices REST ne sont pas des mécanismes d’import/export XML/ZIP inter-instances où on retrouve les row IDs à la volée en fonction des valeurs des clés fonctionnelles.

Bref, pour créer un record d’un objet A et un record d’objet B lié à A la procédure est:

  1. je crée (par un appel POST) le record A
  2. dans la réponse de l’appel de création j’obtient le row ID du record A créé
  3. je créé (par un appel POST) un record B en valorisant la foreign key de B vers A avec le row ID ci dessus

Autrement dit l’usage des webservices est conceptuellement très similaire à ce qu’on ferait dans du code serveur.

PS: je ne recommande pas d’utilisez pas la page API tester pour travailler car c’est un outil assez limité et en fin de vie. Utilisez plutôt des appels curl ou un vrai bon outil du marché comme Postman.

PS 2: et si vous appelez les webservices REST dans un contexte de page web (ou d’appli nodeJS) je vous recommande fortement d’utiliser la lib suivante: https://www.npmjs.com/package/simplicite plutôt que de faire des appels HTTP bas niveau…

Cf. https://github.com/simplicitesoftware/web-demo et https://github.com/simplicitesoftware/nodejs-demo pour des exemples d’usage de cette lib

J’ai identifié le problème qui n’est pas lié à la plateforme, désolé. Une condition dans le preSearch de l’objet lié empêche de le rechercher et donc de l’affecter à l’objet initial.

Bonne journée,
Guillaume