Development #51884
eSirius : ajouter la possibilité de modifier un rendez-vous (PUT)
0%
Description
On a POST, GET et DELETE : ajoutons PUT qui a priori suit le même schéma que POST.
Fichiers
Demandes liées
Révisions associées
Historique
Mis à jour par Nicolas Roche il y a environ 3 ans
- Fichier put.py ajouté
- Statut changé de Nouveau à Information nécessaire
J'ai l'impression que ce service web ne fonctionne pas.
Si j'utilise le PUT tel qu'il est spécifié dans le swagger (http://185.71.148.19/swagger-ui/#/Appointment/updateAppointment)
j'obtiens :
Erreur 404 {'code': 'Not Found', 'message': "Le rendez-vous {0} n'existe pas"}
Si j'utilise le put tel qu'il est décrit par exemple ici : https://restfulapi.net/rest-put-vs-post/
ex: PUT /questions/{question-id}
j'obtiens :
Erreur 405 (pas de message)
Je joins un script qui permet de reproduire ces erreurs.
Mis à jour par Thomas Noël il y a environ 3 ans
Dans le payload du PUT il faut envoyer le codeRDV du rendez-vous à modifier. (test facile : prendre le résultat du GET, modifier le commentaire, injecter avec PUT, it works)
Mis à jour par Nicolas Roche il y a environ 3 ans
- Lié à Development #51983: Prise en compte de la méthode PUT sur les endpoints ajouté
Mis à jour par Nicolas Roche il y a environ 3 ans
- Fichier 0001-esirius-add-an-update-endpoint-51884.patch 0001-esirius-add-an-update-endpoint-51884.patch ajouté
- Statut changé de Information nécessaire à Solution proposée
- Patch proposed changé de Non à Oui
Mis à jour par Thomas Noël il y a environ 3 ans
Impec.
Mais tu me connais, j'aime bien être tatasse ;-)
Pour que les choses soient plus claires, je te propose de faire dans le models.py un schéma spécial pour l'update :
UPDATE_APPOINTMENT_SCHEMA = CREATE_APPOINTMENT_SCHEMA UPDATE_APPOINTMENT_SCHEMA['required'] = ['CodeRDV',] # bon, d'autres aussi sont requis sans doute, mais codeRDV c'est sûr alors mettons juste celui-là :) ... que tu utiliseras dans le @endpoint de l'update
et dans le test, ne pas se fatiguer à fabriquer un payload mais juste :
UPDATE_APPOINTMENT_PAYLOAD = GET_APPOINTMENT_RESPONSE
et juste vérifier alors qu'après un del UPDATE_APPOINTMENT_PAYLOAD['CodeRDV']
le endpoint renvoie une 400 sans interroger esirius (esirius_mock.call_count ne bouge pas).
Un truc aussi, dans les tests il ne faut pas inventer de domaines genre « dummy-server.org » : il faut utiliser example.net, example.org ou example.com de la RFC 2606. (moi j'aime bien example.net mais chacun ses goûts). A faire dans un patch à part éventuellement (un patch "global" parce que tu sembles l'aimer ce domaine, dans tes autres créations ;) )
Pour le reste ça me parait tout bien, je te rassure déjà !
Mis à jour par Nicolas Roche il y a environ 3 ans
- Fichier 0001-esirius-add-an-update-endpoint-51884.patch 0001-esirius-add-an-update-endpoint-51884.patch ajouté
Remarques prises en compte.
Juste pour info, il y a une typo dans le swagger
qui indique que CodeRDV prend une majuscule dans les paylod de POST et PUT et dans la réponse de GET (mais pas comme paramètre dans l'URL). En fait les 2 othographes dans le payload sont accéptées par eSirius. Comme le service web GET eSirius nous retourne la version en minuscule, j'ai modifié le connecteur pour qu'il l'accepte afin que l'on puisse recopier la réponse dans le payload du PUT sans avoir à adapter le nom de l'attribut.
il faut utiliser example.net
traite dans #52048
Mis à jour par Thomas Noël il y a environ 3 ans
- Statut changé de Solution proposée à Solution validée
Mis à jour par Nicolas Roche il y a environ 3 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 909a2995033725dd2df2d992e13ac97ee2a05529 Author: Nicolas ROCHE <nroche@entrouvert.com> Date: Thu Mar 11 15:54:25 2021 +0100 esirius: add an update endpoint (#51884)
Mis à jour par Frédéric Péters il y a environ 3 ans
- Statut changé de Résolu (à déployer) à Solution déployée
esirius: add an update endpoint (#51884)