Projet

Général

Profil

Development #34664

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

Ajouté par Mikaël Ates (de retour le 29 avril) il y a presque 5 ans. Mis à jour il y a presque 5 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
09 juillet 2019
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

cf. Service_Web_TIERS_2.04 Astre v2.02.005.doc

Champs "Sigle : Sigle du Tiers"


Fichiers

Révisions associées

Révision bd01a1a4 (diff)
Ajouté par Serghei Mihai il y a presque 5 ans

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

Historique

#1

Mis à jour par Serghei Mihai il y a presque 5 ans

#2

Mis à jour par Thomas Noël il y a presque 5 ans

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

#3

Mis à jour par Serghei Mihai il y a presque 5 ans

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

#4

Mis à jour par Thomas Noël il y a presque 5 ans

  • Statut changé de Solution proposée à 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

Mis à jour par Serghei Mihai il y a presque 5 ans

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

Mis à jour par Thomas Noël il y a presque 5 ans

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

Mis à jour par Serghei Mihai il y a presque 5 ans

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

Mis à jour par Serghei Mihai il y a presque 5 ans

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

#10

Mis à jour par Thomas Noël il y a presque 5 ans

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

Mis à jour par Serghei Mihai il y a presque 5 ans

  • Statut changé de Solution proposée à En cours

Ok, je fais ça.

#12

Mis à jour par Serghei Mihai il y a presque 5 ans

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

#13

Mis à jour par Thomas Noël il y a presque 5 ans

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

Mis à jour par Serghei Mihai il y a presque 5 ans

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

Mis à jour par Thomas Noël il y a presque 5 ans

Ca veut dire que tu peux poser un enum ?

#16

Mis à jour par Serghei Mihai il y a presque 5 ans

Oui.

#17

Mis à jour par Serghei Mihai il y a presque 5 ans

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

#18

Mis à jour par Serghei Mihai il y a presque 5 ans

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

#19

Mis à jour par Thomas Noël il y a presque 5 ans

  • Statut changé de Solution proposée à Solution validée

Allez hop zou.

#20

Mis à jour par Serghei Mihai il y a presque 5 ans

  • Statut changé de Solution validée à 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

Mis à jour par Benjamin Dauvergne il y a presque 5 ans

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

Mis à jour par Benjamin Dauvergne il y a presque 5 ans

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

Mis à jour par Frédéric Péters il y a presque 5 ans

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF