Projet

Général

Profil

Development #70425

Permettre de spécifier un indicateur de version dans un endpoint

Ajouté par Emmanuel Cazenave il y a plus d'un an. Mis à jour il y a plus d'un an.

Statut:
Rejeté
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
18 octobre 2022
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Pour permettre de cacher/exposer des endpoints en fonctions de la version du logiciel métier avec lequel on communique.

Que le décorateur @endpoint gagne un paramètre api_version dans lequel on pourrait passer par exemple '<3'.

Et si le connecteur à un champ api_version, pour endpoint qui serait appelé et sur lequel aurait été utilisé api_version dans le décorateur endpoint, s'en servir pour ne rien faire si ça matche ou renvoyer une 404 si ça matche pas.


Fichiers


Demandes liées

Lié à Passerelle - Development #67549: API Entreprise v3 - évolutionsFermé31 janvier 2023

Actions

Historique

#1

Mis à jour par Emmanuel Cazenave il y a plus d'un an

#2

Mis à jour par Frédéric Péters il y a plus d'un an

jenkins en erreur mais je n'ai pas regardé.

Sur le fond, ça me semble très spécifique au cas de cette montée de version api entreprise, je n'envisage pas d'utilité générale, ça pourrait pas juste rester spécifique et en haut des quelques endpoints y ajouter des if pas la bonne version: raise BadRequest('mauvaise version').

?

#3

Mis à jour par Emmanuel Cazenave il y a plus d'un an

J'imaginais que ça pourrait servir ailleurs à un moment ou à un autre mais évidement j'en sais rien.

Frédéric Péters a écrit :

jenkins en erreur mais je n'ai pas regardé.

C'est bon maintenant.

Sur le fond, ça me semble très spécifique au cas de cette montée de version api entreprise, je n'envisage pas d'utilité générale.

J'imaginais que ça pourrait servir ailleurs à un moment ou à un autre mais évidement j'en sais rien.

ça pourrait pas juste rester spécifique et en haut des quelques endpoints y ajouter des if pas la bonne version: raise BadRequest('mauvaise version'). ?

Ça pourrait tout à fait; là où mon patch fait quand même plus propre c'est que sur la page d'accueil du connecteur il cache les endpoints qui ne sont pas dispos dans la version dans laquelle l'instance du connecteur est configurée (fonctionnalité non évoquée dans la description du ticket). Sur api entreprise (encore lui) il y a pas mal de endpoints dans v2 et dans v3, ça fera une page d'accueil assez indigeste je trouve sans cette fonctionnalité.

J'imagine que je pourrais arriver au même résultat en surchargeant BaseResource.get_endpoints_infos dans APIEntreprise, mais je trouve mon patch clean et pas cher alors je le joins quand même.

#4

Mis à jour par Frédéric Péters il y a plus d'un an

il y a pas mal de endpoints dans v2 et dans v3, ça fera une page d'accueil assez indigeste je trouve sans cette fonctionnalité.

Mais c'est une conséquence de la décision de ne pas faire du connecteur une couche de compatibilité intra-versions. (passons, j'accepte)

(bref perso pas enthousiaste, parce que je ne vois pas encore de généralisation, mais sans doute aussi parce que je regrette encore cette décision).

(et cela posé, je laisse ce ticket et les relectures/décisions à d'autres)

#5

Mis à jour par Benjamin Dauvergne il y a plus d'un an

J'ai du mal à voir l'utilité, en vrai on va avoir les endpoints v2 et v3 en parallèle sur API entreprise pendant 1 an si j'ai bien compris, personne ne pourra tester les deux en même temps sauf à jongler sur la configuration du connecteur ? J'ai l'impression que c'est plus chiant qu'autre chose. De plus il ne me semble pas qu'on ait tant de endpoints que ça, on est loin de couvrir tout ce qu'expose API entreprise.

Si le plan c'est d'ajouter des endpoints v3, je verrai plutôt un patch pour pouvoir marquer des endpoints comme étant dépréciés avec une date de retrait prévu, si le but c'est d'adapter les endpoints pour fonctionner avec les deux versions alors on a pas besoin de ça... Je suis dubitatif moi aussi.

#6

Mis à jour par Emmanuel Cazenave il y a plus d'un an

Benjamin Dauvergne a écrit :

personne ne pourra tester les deux en même temps sauf à jongler sur la configuration du connecteur ?

Une instance du connecteur en v2, une deuxième en v3. Et tu peux progressivement adapter tes démarches, en allant taper sur l'instance v3, me suis-je imaginé.

Ça vise aussi le futures version d'api entreprise dont la doc de migration dit :

Avec la V.3 : Toutes les API pourront évoluer indépendamment les unes des autres. Les anciennes versions resteront toujours disponibles. Le numéro de version devient donc un paramètre de l’appel et non plus une valeur fixe pour toutes les API.

C'est un peu flou mais j'imagine que des nouveaux endpoints vont apparaître en v4 et encore d'autres en v5 et que c'est raccord avec le fait de pouvoir faire apparaitre/disparaitre des endpoints de connecteur selon une version.

#7

Mis à jour par Benjamin Dauvergne il y a plus d'un an

Emmanuel Cazenave a écrit :

Ça vise aussi le futures version d'api entreprise dont la doc de migration dit :

Sincèrement je pense que d'ajouter les endpoints v3 là tout de suite est une bonne idée plutôt que de rester coincé sur une discussion sans fin. Mais figer le fonctionnement sur ces histoires de version me semble prématuré, on pourra vivre avec une ribambelle de endpoint, sans jonglet sur deux connecteurs utilisant le même code mais configuré différemment. Je pense juste nécessaire d'ajouter à la description un marqueur v2/v3 ou le marqueur de déprécation dont je parle plus haut (ça ça me semble réutilisable), que ce soit juste de la doc.

Avec la V.3 : Toutes les API pourront évoluer indépendamment les unes des autres. Les anciennes versions resteront toujours disponibles. Le numéro de version devient donc un paramètre de l’appel et non plus une valeur fixe pour toutes les API.

C'est un peu flou mais j'imagine que des nouveaux endpoints vont apparaître en v4 et encore d'autres en v5 et que c'est raccord avec le fait de pouvoir faire apparaitre/disparaitre des endpoints de connecteur selon une version.

C'est encore pire, on va vouloir taper en v3 sur un endpoint et v4 sur un autre :/ Et certainement que si ça évolue beaucoup, nos utilisateurs le voudront, en attendant faut juste prévoir un paramètre ?version= sur tous les endpoints v3, non ? Par défaut à 3 si j'ai bien compris.

#8

Mis à jour par Emmanuel Cazenave il y a plus d'un an

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

Bon ok je remballe.

#9

Mis à jour par Emmanuel Cazenave il y a plus d'un an

Et Marie, de passage au bureau :

ah bon pourquoi c'est rejeté, alors on va avoir un connecteur blindé de endpoints, ça va être méga relou

#11

Mis à jour par Frédéric Péters il y a plus d'un an

Et il y a un paramètre display_category sur @endpoint, qui permettrait de séparer les v2 des v3.

Formats disponibles : Atom PDF