Project

General

Profile

Development #34664

astregs : renvoyer le payload json au webservice de création d'association

Added by Mikaël Ates 5 months ago. Updated 5 months ago.

Status:
Solution déployée
Priority:
Normal
Assignee:
Target version:
-
Start date:
09 Jul 2019
Due date:
% Done:

0%

Patch proposed:
Yes
Planning:
No

Description

cf. Service_Web_TIERS_2.04 Astre v2.02.005.doc

Champs "Sigle : Sigle du Tiers"

0001-astregs-send-initials-on-association-creation-34664.patch View (8.96 KB) Serghei Mihai, 09 Jul 2019 10:08 AM

0001-astregs-send-acronym-on-association-creation-34664.patch View (8.95 KB) Serghei Mihai, 09 Jul 2019 12:38 PM

0001-astregs-forward-json-payload-as-it-is-for-associatio.patch View (12.4 KB) Serghei Mihai, 10 Jul 2019 09:02 AM

0001-astregs-forward-json-payload-as-it-is-for-associatio.patch View (15.1 KB) Serghei Mihai, 10 Jul 2019 09:09 AM

0001-astregs-update-payload-params-names-for-association-.patch View (15.2 KB) Serghei Mihai, 10 Jul 2019 04:44 PM

0001-astregs-update-payload-params-names-for-association-.patch View (15.2 KB) Serghei Mihai, 10 Jul 2019 05:44 PM

0001-astregs-update-payload-params-names-for-association-.patch View (15.2 KB) Serghei Mihai, 11 Jul 2019 11:29 AM

Associated revisions

Revision bd01a1a4 (diff)
Added by Serghei Mihai 5 months ago

astregs: update payload params names for association creation (#34664)

History

#1 Updated by Serghei Mihai 5 months ago

#2 Updated by Thomas Noël 5 months ago

acronym plutôt que initials ? (j'ai mis de mon côté du temps à comprendre pourquoi "initials")

#3 Updated by Serghei Mihai 5 months ago

J'ai pris la première suggestion des sites de traduction mais 'acronym' c'est mieux.

#4 Updated by Thomas Noël 5 months ago

  • Status changed from Solution proposée to Solution validée

En fait la meilleure adaptation serait peut-être "abbreviation" plutôt que "acronym". Tu choisiras finalement.

Et le jour où on saura afficher les JSONSchema des endpoints dans la page de details d'un connecteur, on fera en sorte que la description dise bien qu'il s'agit de "Sigle". (et je me dis que tu aurais pu envoyer tel que le post_data reçu, ni vérification ni transformation, pas de schéma... parce que si ça bouge sans arrêt comme ça, t'as pas fini, et va falloir documenter toute les translations, et la réponse va pas avoir la même syntaxe, etc.)

#5 Updated by Serghei Mihai 5 months ago

Je vais m'arrêter à "acronym".

Effectivement j'aurais pu renvoyer le payload tel quel et laisser l'API en face exploser si un paramètre ne convenait pas, mais ça m'embête de ne faire aucune vérification des données en entrée, au moins les paramètres obligatoires.

#6 Updated by Thomas Noël 5 months ago

Serghei Mihai a écrit :

Je vais m'arrêter à "acronym".

Effectivement j'aurais pu renvoyer le payload tel quel et laisser l'API en face exploser si un paramètre ne convenait pas, mais ça m'embête de ne faire aucune vérification des données en entrée, au moins les paramètres obligatoires.

Zeep le fait déjà gratuitement, selon le WSDL qui décrit déjà le schéma que tu ne fais que répéter ici. Puis, éventuellement, le logiciel en face.

#7 Updated by Serghei Mihai 5 months ago

Zeep laisse tout passer vu la WSDL:

<complexType name="Contact">
 <sequence>
         <element name="idContact" nillable="true" type="xsd:string"/>
         <element name="CodeContact" nillable="true" type="xsd:string"/>
         <element name="CodeTitreCivilite" nillable="true" type="xsd:string"/>
         <element name="Nom" nillable="true" type="xsd:string"/>
         <element name="Prenom" nillable="true" type="xsd:string"/>
         <element name="NomDeJeuneFille" nillable="true" type="xsd:string"/>
         <element name="DateDeNaissance" nillable="true" type="xsd:string"/>
         <element name="FormuleCivilite" nillable="true" type="xsd:string"/>
         <element name="IntituleTitre2" nillable="true" type="xsd:string"/>
         <element name="IntituleTitre3" nillable="true" type="xsd:string"/>
         <element name="IntituleTitre4" nillable="true" type="xsd:string"/>
         <element name="SituationDeFamille" nillable="true" type="xsd:string"/>
         <element name="CodeFonction" nillable="true" type="xsd:string"/>
         <element name="LibelleFonction" nillable="true" type="xsd:string"/>
         <element name="TelephoneBureau" nillable="true" type="xsd:string"/>
         <element name="TelephoneMobile" nillable="true" type="xsd:string"/>
         <element name="NumeroDeFax" nillable="true" type="xsd:string"/>
         <element name="AdresseMail" nillable="true" type="xsd:string"/>
         <element name="PageWeb" nillable="true" type="xsd:string"/>
         <element name="AdresseDestinataire" nillable="true" type="xsd:string"/>
         <element name="AdresseComplementaire" nillable="true" type="xsd:string"/>
         <element name="ComplementGeographique" nillable="true" type="xsd:string"/>
         <element name="RueVoie" nillable="true" type="xsd:string"/>
         <element name="ComplementVoie" nillable="true" type="xsd:string"/>
         <element name="CodePostal" nillable="true" type="xsd:string"/>
         <element name="Ville" nillable="true" type="xsd:string"/>
         <element name="CodePays" nillable="true" type="xsd:string"/>
         <element name="LibellePays" nillable="true" type="xsd:string"/>
         <element name="LibelleAdresse" nillable="true" type="xsd:string"/>
         <element name="Commentaire" nillable="true" type="xsd:string"/>
 </sequence>
</complexType>

mais misons sur les erreurs levées par le logiciel.

#8 Updated by Serghei Mihai 5 months ago

Nouveau patch avec transfer du payload json tel quel au WS en face (et je mets à jour le titre du ticket)

#9 Updated by Serghei Mihai 5 months ago

Sans la déclaration du schema JSON.

#10 Updated by Thomas Noël 5 months ago

En fait je viens de voir avec Emmanuel : la validation du schéma JSON n'empêche pas le payload de contenir des trucs en plus.

Donc on peut très bien garder un schéma JSON, mais qui suivra les noms des arguments attendus par le WSDL. Peut-être réduire à quelques arguments qu'on sait être indispensables et qui ne changeront pas...

Comme ça tu gagnes le post_data au lieu de faire un json.loads un peu moche, et le endpoint reste "joli".

#11 Updated by Serghei Mihai 5 months ago

  • Status changed from Solution proposée to En cours

Ok, je fais ça.

#12 Updated by Serghei Mihai 5 months ago

Et voilà.
Branche renommée et mise à jour sur le master.

#13 Updated by Thomas Noël 5 months ago

Pfff je ne le vois que maintenant, les booléens, genre « 'AdresseIsAdresseDeFacturation': False ». w.c.s. on ne peut pas envoyer ça (sauf à passer par du Python, et il ne faut pas).

Ca donne quoi si tu envoies des strings ? Ca plante au niveau du validateur de schéma JSON ?

(et là, le transformateur #34178 serait sympa j'imagine)

#14 Updated by Serghei Mihai 5 months ago

Et je constate que:

<element name="Financier" nillable="true" type="xsd:string"/>

Donc les paramètres en tant que strings passent.
Je viens de créer une nouvelle association sur la recette en passant:

 'AdresseIsAdresseDeCommande': 'False',
 'AdresseIsAdresseDeFacturation': 'False',
 'Financier': 'True'

et ça fonctionne.

#15 Updated by Thomas Noël 5 months ago

Ca veut dire que tu peux poser un enum ?

#16 Updated by Serghei Mihai 5 months ago

Oui.

#17 Updated by Serghei Mihai 5 months ago

Oublié de préciser: il est posé dans mon patch.

#18 Updated by Serghei Mihai 5 months ago

Les paramètres doivent être en minuscule, sinon le WS en face considère que c'est du false.

#19 Updated by Thomas Noël 5 months ago

  • Status changed from Solution proposée to Solution validée

Allez hop zou.

#20 Updated by Serghei Mihai 5 months ago

  • Status changed from Solution validée to Résolu (à déployer)
commit bd01a1a48e787247523626b33fefa5920cd785bb (origin/master, origin/HEAD)
Author: Serghei Mihai <smihai@entrouvert.com>
Date:   Tue Jul 9 09:52:13 2019 +0200

    astregs: update payload params names for association creation (#34664)

#21 Updated by Benjamin Dauvergne 5 months ago

Serghei Mihai a écrit :

Et je constate que:
[...]

Donc les paramètres en tant que strings passent.
Je viens de créer une nouvelle association sur la recette en passant:
[...]

et ça fonctionne.

Ça passe mais t'es sûr des valeurs ? False ça donne faux et True ça donne vrai de l'autre coté ? J'ai une extrême méfiance avec les booléens en SOAP qu'ils soient implémentés selon la norme ou de travers comme ici.

#22 Updated by Benjamin Dauvergne 5 months ago

Serghei Mihai a écrit :

Les paramètres doivent être en minuscule, sinon le WS en face considère que c'est du false.

Ok, ignore mon autre commentaire, oui tu dois pouvoir passer 0 ou 1 aussi, c'est juste qu'il parse du xs:string comme du xs:boolean.

#23 Updated by Frédéric Péters 5 months ago

  • Status changed from Résolu (à déployer) to Solution déployée

Also available in: Atom PDF