Tutoriel OpenAPI 3.0 : 8 conseils pour documenter une spécification API

Cet article détaille l'upgrade et la doc API avec OAS 3. Certains points s'appliquent à OAS 2 (Swagger).

Louis Dupont

Louis Dupont

5 June 2025

Tutoriel OpenAPI 3.0 : 8 conseils pour documenter une spécification API

Auparavant, vous utilisiez peut-être Swagger 2.0 (également connu sous le nom d'OAS 2), mais il est maintenant temps de passer à la spécification OpenAPI (OAS) 3. Dans cet article, nous allons présenter les points clés du processus de mise à niveau et les éléments essentiels de la documentation des API à l'aide d'OAS 3.

Certains de ces points peuvent encore s'appliquer aux documents OAS 2 précédents (anciennement connus sous le nom de Swagger), mais il est important de le noter car je ne les ai peut-être pas pleinement soulignés auparavant.

Les exemples de code de cet article sont extraits de la spécification OAS 3 de bookmarks.dev-api, qui est disponible dans le fichier openapi.yaml sur GitHub. Les résultats peuvent être consultés sur bookmarks.dev/api/docs/.

Voici dix considérations clés :

1. Lisez le document de spécification

Lisez l'article "A Guide to What's New in OpenAPI 3.0", qui partage certaines des principales mises à jour de la dernière version d'OAS et fournit des informations détaillées sur ce que vous devez savoir lors de la transition d'OAS 2.0 vers OAS 3.0. Cet article est basé sur le webinaire d'une heure "OpenAPI 3.0, et ce que cela signifie pour l'avenir de Swagger".

2. Utilisez un service Web de conversion

Utilisez le service Web de conversion OpenAPI/Swagger 2.0 vers OpenAPI 3.0 pour transformer vos spécifications Swagger en OpenAPI 3.0.

Il est disponible en ligne à l'adresse https://converter.swagger.io/, et vous pouvez également l'utiliser comme image Docker :

docker pull swaggerapi/swagger-converter:v1.0.2
docker run -it -p 8080:8080 --name swagger-converter swaggerapi/swagger-converter:v1.0.2

3. Validez votre spécification et prévisualisez-la avec Swagger Editor

Swagger Editor vous permet de modifier les spécifications d'API Swagger au format YAML dans votre navigateur Web et de prévisualiser instantanément la documentation.

Vous pouvez l'utiliser en ligne ou en tant que version publiée par npm ou une image Docker. Pour plus de détails, reportez-vous au README du projet.

4. Présentez votre documentation avec Swagger UI

Swagger UI est un ensemble de ressources HTML, JavaScript et CSS qui génèrent dynamiquement une belle documentation pour les API conformes à Swagger.

Vous pouvez l'utiliser directement, comme moi, en accédant à la documentation Swagger UI via un itinéraire d'API, par exemple bookmarks.dev/api/docs/. Voici un extrait de code de app.js :

const swaggerUi = require('swagger-ui-express');
const YAML = require('yamljs');
const swaggerDocument = YAML.load('./docs/openapi/openapi.yaml');

app.use('/api/docs', swaggerUi.serve, swaggerUi.setup(swaggerDocument));

L'inclusion du fichier de spécification ouvert (openapi.yaml) dans votre surveillance nodemon (par exemple, nodemon --inspect ./bin/www --watch src --watch docs/openapi/openapi.yaml) peut être utile, vous permettant de recharger l'interface utilisateur sans redémarrer manuellement le serveur ExpressJS.

4.1. Utilisez swagger-jsdoc pour l'approche Code-First

Un autre point notable est que vous pouvez utiliser swagger-jsdoc pour intégrer Swagger via des annotations JSDoc dans votre code. Le projet swagger-jsdoc suppose que vous souhaitez documenter le code existant, actif et fonctionnel d'une manière qui lui "donne vie", en générant une spécification qui peut être intégrée à d'autres outils Swagger plutôt que l'inverse.

Actuellement, je gère la documentation dans un seul fichier openapi.yaml, mais je pourrais envisager de l'utiliser à l'avenir.

5. Regroupez les opérations à l'aide de balises

Vous pouvez attribuer une liste de balises à chaque opération d'API, ce qui permet à Swagger UI et Swagger Editor d'afficher facilement les opérations par balises. Pour contrôler le tri dans Swagger UI, vous devez les ajouter en tant que balises globales au niveau racine. Vous pouvez également y ajouter des descriptions et des liens vers des documents externes.

Voici les balises que j'utilise pour l'API :

yamlCopy code
tags:- name: rootdescription: Used to mark root endpoints- name: versiondescription: Access project version and gitSha1- name: public-bookmarksdescription: Access public bookmarks- name: personal-bookmarksdescription: Operations on personal bookmarks- name: user-datadescription: Operations on user data- name: helperdescription: Helper endpoints/operations

6. Spécifiez les URL de base de l'API avec les serveurs

Dans OpenAPI 3.0, vous utilisez le tableau des serveurs pour spécifier une ou plusieurs URL de base pour l'API. Les serveurs remplacent les mots-clés host, basePath et schemes utilisés dans OpenAPI 2.0. Chaque serveur a une URL et une description facultative au format Markdown.

yamlCopy code
servers:- url: http://localhost:3000/apidescription: Local server for development- url: https://www.bookmarks.dev/apidescription: Main (production) server

7. Définissez et réutilisez les ressources avec les composants

Souvent, plusieurs opérations d'API partagent des paramètres communs ou renvoient la même structure de réponse. Pour éviter la duplication de code, vous pouvez placer les définitions communes dans la section des composants globaux et y faire référence à l'aide de $ref.

Par exemple, pour la réponse commune à plusieurs opérations où une liste de signets apparaît, je définis une BookmarkListResponse sous components > responses :

components:responses:BookmarkListResponse:description: List of bookmarkscontent:application/json:schema:type: arrayitems:$ref: "#/components/schemas/Bookmark"

Et ensuite, j'y fais référence dans différentes opérations, telles que get-public-bookmarks :

yamlCopy code
/public/bookmarks:get:summary: Return a list of public bookmarks using query parameters.tags:- public-bookmarksparameters:- $ref: "#/components/parameters/searchTextQueryParam"- $ref: "#/components/parameters/limitQueryParam"- $ref: "#/components/parameters/locationQueryParam"responses:200:description: OK$ref: "#/components/responses/BookmarkListResponse"

Notez le locationQueryParam mentionné ci-dessus. Il est défini sous components > parameters et référencé à plusieurs endroits dans la spécification de l'API, y compris l'exemple montré ci-dessus.

8. Ajoutez des exemples pour plus de clarté

Vous pouvez ajouter des exemples aux paramètres, aux propriétés et aux objets pour rendre la spécification de votre service Web plus claire. Les exemples peuvent être lus par les outils et les bibliothèques de votre API. Par exemple, un outil d'API factice peut utiliser des exemples de valeurs pour générer des requêtes factices. Vous pouvez spécifier des exemples pour les objets, les propriétés individuelles et les paramètres d'opération à l'aide des clés example ou examples.

Par exemple, vous pouvez avoir des valeurs complexes comme exemples pour un paramètre de texte de recherche :

components:parameters:searchTextQueryParam:name: qin: querydescription: |
        Search query (words separated by spaces). Special filters available:
          * `lang:iso_language_code` - e.g., `lang:en` for English, `lang:es` for Spanish, `lang:de` for German bookmarks
          * `site:site_URL` - e.g., return bookmarks from [www.codepedia.org](htt

Explore more

Fathom-R1-14B : Modèle de raisonnement IA avancé d'Inde

Fathom-R1-14B : Modèle de raisonnement IA avancé d'Inde

L'IA en expansion rapide. Fathom-R1-14B (14,8 milliards de paramètres) excelle en raisonnement mathématique et général, conçu par Fractal AI Research.

5 June 2025

Mistral Code : L'assistant de codage le plus personnalisable basé sur l'IA pour les entreprises

Mistral Code : L'assistant de codage le plus personnalisable basé sur l'IA pour les entreprises

Découvrez Mistral Code, l'IA d'aide au code la plus personnalisable pour les entreprises.

5 June 2025

Comment Claude Code transforme le codage de l'IA en 2025

Comment Claude Code transforme le codage de l'IA en 2025

Découvrez Claude Code en 2025 : codage IA révolutionné. Fonctionnalités, démo, et pourquoi il gagne du terrain après Windsurf d'Anthropic. Indispensable !

5 June 2025

Pratiquez le Design-first d'API dans Apidog

Découvrez une manière plus simple de créer et utiliser des API