5.4 KiB
5.4 KiB
Guide Swagger - Documentation OpenAPI pour Adastra API
Accès à la documentation
Une fois le serveur lancé, accédez à : http://localhost:3200/api-docs
Exemple de documentation pour une route
Voici un exemple de comment documenter une GET route avec des paramètres de query :
/**
* @swagger
* /api/v1/articles:
* get:
* summary: Récupère la liste des articles
* description: Retourne une liste paginée de tous les articles
* tags:
* - Articles
* parameters:
* - in: query
* name: page
* schema:
* type: integer
* default: 1
* description: Numéro de page
* - in: query
* name: limit
* schema:
* type: integer
* default: 10
* description: Nombre d'articles par page
* responses:
* 200:
* description: Liste des articles récupérée avec succès
* content:
* application/json:
* schema:
* type: object
* properties:
* data:
* type: array
* items:
* type: object
* properties:
* id:
* type: integer
* title:
* type: string
* content:
* type: string
* total:
* type: integer
* 400:
* description: Erreur de validation
* 401:
* description: Non authentifié
* 500:
* description: Erreur serveur
*/
router.get('/', async (req, res) => {
// ... logique du contrôleur
});
Exemple avec POST et authentification
/**
* @swagger
* /api/v1/articles:
* post:
* summary: Crée un nouvel article
* description: Crée un nouvel article avec les données fournies
* tags:
* - Articles
* security:
* - bearerAuth: []
* requestBody:
* required: true
* content:
* application/json:
* schema:
* type: object
* required:
* - title
* - content
* properties:
* title:
* type: string
* example: "Mon Article"
* content:
* type: string
* example: "Contenu de l'article"
* tags:
* type: array
* items:
* type: string
* example: ["tag1", "tag2"]
* responses:
* 201:
* description: Article créé avec succès
* content:
* application/json:
* schema:
* type: object
* properties:
* id:
* type: integer
* title:
* type: string
* content:
* type: string
* 400:
* description: Données invalides
* 401:
* description: Non authentifié
*/
router.post('/', authenticate, async (req, res) => {
// ... logique du contrôleur
});
Exemple avec paramètres URL
/**
* @swagger
* /api/v1/articles/{id}:
* get:
* summary: Récupère un article par ID
* tags:
* - Articles
* parameters:
* - in: path
* name: id
* required: true
* schema:
* type: integer
* description: ID de l'article
* responses:
* 200:
* description: Article récupéré avec succès
* 404:
* description: Article non trouvé
* 500:
* description: Erreur serveur
*/
router.get('/:id', async (req, res) => {
// ... logique du contrôleur
});
Types de schémas courants
Objets simples
schema: {
type: object
properties:
id: { type: integer }
name: { type: string }
email: { type: string, format: email }
age: { type: integer, minimum: 0 }
isActive: { type: boolean }
}
Arrays
schema: {
type: array
items:
type: object
properties:
id: { type: integer }
name: { type: string }
}
Enums
schema: {
type: string
enum: ["pending", "approved", "rejected"]
}
Tags disponibles
Les tags disponibles dans la config Swagger sont :
- Articles - Gestion des articles
- Users - Gestion des utilisateurs
- Products - Gestion des produits
- Clans - Gestion des clans
- Hero Wars - Données Hero Wars
Instructions générales
- Placez les commentaires JSDoc directement au-dessus de la définition de la route
- Utilisez le tag
@swaggerpour indiquer que c'est de la documentation OpenAPI - Commencez par le chemin d'accès :
/api/v1/articles,/api/v1/articles/{id}, etc. - Spécifiez la méthode HTTP :
get,post,put,delete,patch - Incluez toujours :
summary,description,tags,responses - Pour les routes protégées, utilisez
security: [{ bearerAuth: [] }]ousecurity: [{ apiKeyAuth: [] }]
Pour plus de détails
Consultez la documentation officielle : https://swagger.io/specification/
Note : Une fois que vous aurez ajouté les commentaires Swagger à vos routes, redémarrez le serveur et accédez à /api-docs pour voir la documentation mise à jour.