Apicurio-studio: Prise en charge des références aux objets de composants dans les documents de spécification

CrĂ©Ă© le 13 mai 2019  Â·  6Commentaires  Â·  Source: Apicurio/apicurio-studio

Actuellement, les objets de rĂ©fĂ©rence dans Apicurio ne peuvent pointer que vers le mĂȘme document dans lequel ils sont utilisĂ©s. ImplĂ©mentez des fonctionnalitĂ©s pour permettre le rĂ©fĂ©rencement d'objets de composants Ă  partir d'autres documents.

Considérations :

  1. Emplacement

    • RĂ©fĂ©rencer des objets composants d'une autre spĂ©cification dans Apicurio

    • Documents de rĂ©fĂ©rence hĂ©bergĂ©s sur un autre serveur

    • Autoriser la gestion sĂ©parĂ©e des objets composants ?

  2. Éditeur

    • L'utilisateur doit ĂȘtre en mesure de remplir facilement les rĂ©fĂ©rences aux documents et objets qu'Apicurio connaĂźt (sans les ouvrir, saisie semi-automatique ?)

  3. Validation

    • Apicurio doit valider les objets rĂ©fĂ©rencĂ©s

    • Que se passe-t-il si le document rĂ©fĂ©rencĂ© est mis Ă  jour ou supprimĂ© ?

ProblÚmes similaires/inclus :

  • #401 Lier des documents externes
enhancement

Commentaire le plus utile

Je me rends compte que cela a pris un peu de temps, mais les rĂ©fĂ©rences externes seront officiellement prises en charge Ă  partir de la version bĂȘta 2.46, qui est la prochaine version (sera, espĂ©rons-le, faite demain). Il existe une nouvelle interface utilisateur pour importer les types de donnĂ©es et les rĂ©ponses d'autres documents Apcurio Studio dans le document actuel. De plus, la validation a Ă©tĂ© mise Ă  jour pour prendre en charge la rĂ©solution des http/s externes ainsi que les rĂ©fĂ©rences internes d'Apicurio. Cela devrait ĂȘtre un bon premier pas vers une prise en charge mature des rĂ©fĂ©rences entre les documents.

Tous les 6 commentaires

Cas d'utilisation

Le principal cas d'utilisation que cela rĂ©soudra est de donner aux utilisateurs la possibilitĂ© de centraliser leurs dĂ©finitions de types de donnĂ©es, peut-ĂȘtre dans un seul fichier (ou un ensemble de fichiers). Ces types de donnĂ©es peuvent ensuite ĂȘtre exploitĂ©s dans plusieurs dĂ©finitions d'API en rĂ©fĂ©rençant leur emplacement central.

Considérations

Afin de prendre en charge les références externes, un certain nombre d'améliorations sont nécessaires. Voici une liste sans ordre particulier :

  • La bibliothĂšque de modĂšles de donnĂ©es (actuellement oai-ts-core mais bientĂŽt apicurio-data-models ) doit ĂȘtre amĂ©liorĂ©e pour prendre en charge un rĂ©solveur de rĂ©fĂ©rence enfichable. Actuellement, ces bibliothĂšques ne peuvent rĂ©soudre que les rĂ©fĂ©rences internes. Au lieu de cela, un consommateur de la bibliothĂšque doit ĂȘtre en mesure de fournir un rĂ©solveur de rĂ©fĂ©rence personnalisĂ© afin que les rĂ©fĂ©rences externes puissent ĂȘtre rĂ©solues avec succĂšs.

  • Apicurio Studio doit prendre en charge une ressource de style « type de donnĂ©es uniquement », avec un Ă©diteur axĂ© sur la conception de types de donnĂ©es. Cela permet un flux de travail plus spĂ©cifique pour crĂ©er/gĂ©rer des types de donnĂ©es indĂ©pendamment des conceptions d'API.

  • Lors de la dĂ©finition d'un type dans l'Ă©diteur de conception d'API, l'outillage a besoin d'un moyen de sĂ©lectionner des types Ă  partir de ressources externes. Nous devons rĂ©flĂ©chir Ă  la meilleure façon d'afficher ces types externes Ă  l'utilisateur pour la sĂ©lection. Il se peut que nous ayons besoin d'un moyen pour les conceptions d'API d'"importer" d'autres ressources/fichiers afin que l'interface utilisateur puisse affiner les choix pour l'utilisateur et les afficher judicieusement. Gardez Ă  l'esprit que l'Ă©diteur devra extraire et analyser toutes les ressources externes afin d'afficher leurs types de donnĂ©es disponibles dans une sorte de contrĂŽle d'interface utilisateur de sĂ©lection.

  • Nous devrons peut-ĂȘtre dĂ©cider si les ressources de type de donnĂ©es en cours peuvent ĂȘtre utilisĂ©es comme source de rĂ©fĂ©rences externes dans une conception d'API. En d'autres termes, devrait-il ĂȘtre possible de rĂ©fĂ©rencer des types de donnĂ©es « instantanĂ©s » dans une conception d'API ? Ou devrions-nous exiger qu'une ressource de type de donnĂ©es soit « finale » avant qu'elle puisse ĂȘtre utilisĂ©e comme source de rĂ©fĂ©rences externes. Si c'est le cas, nous ne pouvons pas « finaliser » une conception d'API tant que ses dĂ©pendances ne sont pas Ă©galement finalisĂ©es. Remarque : tout ce concept nous oblige Ă  implĂ©menter des ressources de finalisation dans Apicurio !

  • Nous devrons dĂ©cider quel sera le format $ref lors du rĂ©fĂ©rencement des ressources Apicurio. Actuellement, toute conception d'API (ou ressource de types de donnĂ©es thĂ©oriques) a un identifiant unique, mais c'est un identifiant opaque qui est gĂ©nĂ©rĂ© lors de la crĂ©ation. Cet ID est actuellement le seul moyen unique d'identifier une ressource Ă  des fins de rĂ©solution. Une fois qu'une ressource est finalisĂ©e (si nous soutenons un tel concept), nous pourrions peut-ĂȘtre accorder Ă  la ressource un identifiant plus convivial et l'utiliser ensuite dans l'URI $ref. Quoi que nous fassions, il convient de noter que lors de la publication d'une ressource dans un registre d'API (une autre fonctionnalitĂ© future), toutes les rĂ©fĂ©rences $ dans la conception d'API devront ĂȘtre rĂ©solues par le registre d'API d'une maniĂšre raisonnable.

Voici quelques informations sur les valeurs autorisées pour un $ref :

MĂȘme si la valeur d'un $ref est un URI, ce n'est pas un localisateur de rĂ©seau, seulement un identifiant. Cela signifie que le schĂ©ma n'a pas besoin d'ĂȘtre accessible Ă  cet URI, mais il peut l'ĂȘtre. Il appartient essentiellement Ă  l'implĂ©mentation du validateur de gĂ©rer les URI de schĂ©ma externes, mais il ne faut pas supposer que le validateur rĂ©cupĂ©rera les ressources rĂ©seau indiquĂ©es dans les valeurs $ref.

Vous trouverez plus d'informations sur les références dans la spécification OpenAPI et la RFC de référence JSON .

Serait-il possible de prioriser la mise en Ɠuvre des rĂ©fĂ©rences aux DataTypes d'une autre spĂ©cification au sein d'Apicurio (plutĂŽt que des rĂ©fĂ©rences externes initialement) ?

La raison pour laquelle je dis cela est que certaines fonctionnalitĂ©s de rĂ©fĂ©rence croisĂ©e sont nĂ©cessaires pour toute utilisation non triviale de Swagger. Par exemple, nous mettons en Ɠuvre divers services qui partagent des types de donnĂ©es (par exemple, des adresses, des personnes, etc.) et aimerions utiliser Apicurio pour les spĂ©cifications de tous ceux-ci. Cependant, pour le moment, nous ne pouvons pas en raison de l'impossibilitĂ© d'utiliser des rĂ©fĂ©rences croisĂ©es.

Serait-il possible de prioriser la mise en Ɠuvre des rĂ©fĂ©rences aux DataTypes d'une autre spĂ©cification au sein d'Apicurio (plutĂŽt que des rĂ©fĂ©rences externes initialement) ?

La raison pour laquelle je dis cela est que certaines fonctionnalitĂ©s de rĂ©fĂ©rence croisĂ©e sont nĂ©cessaires pour toute utilisation non triviale de Swagger. Par exemple, nous mettons en Ɠuvre divers services qui partagent des types de donnĂ©es (par exemple, des adresses, des personnes, etc.) et aimerions utiliser Apicurio pour les spĂ©cifications de tous ceux-ci. Cependant, pour le moment, nous ne pouvons pas en raison de l'impossibilitĂ© d'utiliser des rĂ©fĂ©rences croisĂ©es.

D'accord, cela nous amĂšnerait sur le territoire des applications tueuses.

@jsenko Il semble qu'une fois l'

J'adorerais voir cela, utiliser apicurio au travail et des références serait incroyablement utile à différentes équipes.

Je me rends compte que cela a pris un peu de temps, mais les rĂ©fĂ©rences externes seront officiellement prises en charge Ă  partir de la version bĂȘta 2.46, qui est la prochaine version (sera, espĂ©rons-le, faite demain). Il existe une nouvelle interface utilisateur pour importer les types de donnĂ©es et les rĂ©ponses d'autres documents Apcurio Studio dans le document actuel. De plus, la validation a Ă©tĂ© mise Ă  jour pour prendre en charge la rĂ©solution des http/s externes ainsi que les rĂ©fĂ©rences internes d'Apicurio. Cela devrait ĂȘtre un bon premier pas vers une prise en charge mature des rĂ©fĂ©rences entre les documents.

Cette page vous a été utile?
0 / 5 - 0 notes