Genereer uitgebreide API-documentatie met Swagger of Redoc
description
Met deze prompt kan ik snel een volledige en begrijpelijke API-documentatie genereren die voldoet aan de best practices. Dit helpt om mijn API toegankelijker te maken voor ontwikkelaars en vermindert vragen en fouten bij het gebruik. Het onderscheidt zich door gericht te zijn op het combineren van Swagger en Redoc functionaliteiten en het direct toepasbaar te maken voor mijn eigen API specificatie.
prompt
Help me met het creëren van heldere en gestructureerde API-documentatie voor mijn REST API. Mijn API beschrijving: <voer je API beschrijving of OpenAPI-specifi ... more ›
try_prompt
generate_helper
disclaimerOnPageApi
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Natuurlijk! Hieronder vind je een basisstructuur en tips voor het creëren van heldere en gestructureerde API-documentatie voor jouw gebruikersbeheer REST API, gebaseerd op de OpenAPI-specificatie en geschikt voor tools zoals Swagger en Redoc.
---
# Voorbeeld OpenAPI-specificatie voor Gebruikersbeheer API
```yaml
openapi: 3.0.3
info:
title: Gebruikersbeheer API
versie: 1.0.0
description: >
Een API voor het beheren van gebruikersgegevens, inclusief endpoints voor het ophalen, aanmaken, bijwerken en verwijderen van gebruikers.
servers:
- url: https://api.jouwdomein.nl/v1
components:
securitySchemes:
BearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
schemas:
Gebruiker:
type: object
properties:
id:
type: string
description: Unieke identifier van de gebruiker
naam:
type: string
email:
type: string
aangemaaktOp:
type: string
format: date-time
required:
- id
- naam
- email
security:
- BearerAuth: []
paths:
/gebruikers:
get:
summary: Lijst alle gebruikers op
description: Haal een lijst op van alle geregistreerde gebruikers.
responses:
'200':
description: Een lijst van gebruikers
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Gebruiker'
security:
- BearerAuth: []
post:
summary: Maak een nieuwe gebruiker aan
description: Voeg een nieuwe gebruiker toe aan het systeem.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Gebruiker'
example:
naam: Jan Jansen
email: jan.jansen@example.com
responses:
'201':
description: Gebruiker succesvol aangemaakt
content:
application/json:
schema:
$ref: '#/components/schemas/Gebruiker'
/gebruikers/{id}:
get:
summary: Haal gegevens van een gebruiker op
description: Haal de details van een specifieke gebruiker op via ID.
parameters:
- name: id
in: path
required: true
schema:
type: string
description: ID van de gebruiker
responses:
'200':
description: Gebruikersgegevens
content:
application/json:
schema:
$ref: '#/components/schemas/Gebruiker'
'404':
description: Gebruiker niet gevonden
put:
summary: Werk gegevens van een gebruiker bij
description: Wijzig de gegevens van een bestaande gebruiker.
parameters:
- name: id
in: path
required: true
schema:
type: string
description: ID van de gebruiker
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Gebruiker'
example:
naam: Jan Jansen
email: jan.jansen@nieuwemail.com
responses:
'200':
description: Gebruiker succesvol bijgewerkt
content:
application/json:
schema:
$ref: '#/components/schemas/Gebruiker'
'404':
description: Gebruiker niet gevonden
delete:
summary: Verwijder een gebruiker
description: Verwijder een gebruiker uit het systeem via ID.
parameters:
- name: id
in: path
required: true
schema:
type: string
description: ID van de gebruiker
responses:
'204':
description: Gebruiker succesvol verwijderd
'404':
description: Gebruiker niet gevonden
```
---
# Tips voor Heldere API-Documentatie
1. **Gebruik duidelijke titels en samenvattingen:** Geef korte en duidelijke uitleg van elke endpoint.
2. **Beschrijf parameters en request- en response-voorbeelden:** Hierdoor begrijpen ontwikkelaars exact wat zij moeten sturen en kunnen verwachten.
3. **Specificeer authenticatie:** Vermeld duidelijk dat Bearer JWT-token vereist is en waar deze moet worden toegevoegd (bijvoorbeeld in de Authorization-header).
4. **Gebruik voorbeeldgegevens:** Voeg voorbeelden toe voor requests en responses om de implementatie te versnellen.
5. **Structuur en consistentie:** Houd dezelfde terminologie en structuur door de hele documentatie.
6. **Publiceer en onderhoud regelmatig:** Zorg dat de documentatie up-to-date blijft bij wijzigingen in de API.
---
Wil je dat ik je verder help met het uitbreiden van deze specificatie of het genereren van een volledige Swagger- of Redoc-setup?
provider: deepseek
model: deepseek-chat
Absoluut! Hier is een gestructureerde handleiding voor het opzetten van professionele API-documentatie voor jouw gebruikersbeheer-API, gebaseerd op de OpenAPI-specificatie (voorheen Swagger) en met Redoc als weergave-optie.
### Stap 1: De Basis van je OpenAPI-specificatie (openapi.yaml of openapi.json)
Je documentatie begint met een goed gestructureerd OpenAPI-document. Hier is een basisvoorbeeld dat je kunt aanpassen.
```yaml
openapi: 3.0.0
info:
title: Gebruikersbeheer API
description: |-
Een robuuste REST API voor het beheren van gebruikers binnen een systeem.
Deze API maakt het mogelijk om gebruikers aan te maken, op te vragen, bij te werken en te verwijderen.
version: 1.0.0
contact:
name: API Ondersteuning
email: support@jebedrijf.nl
servers:
- url: https://api.jebedrijf.nl/v1
description: Productieserver
- url: https://api.dev.jebedrijf.nl/v1
description: Ontwikkelserver
tags:
- name: Gebruikers
description: Alles rondom het beheren van gebruikers
paths:
# Je endpoints komen hier (zie volgende stap)
components:
# Je herbruikbare componenten (schema's, security) komen hier (zie latere stap)
```
---
### Stap 2: Gedetailleerde Beschrijving van Endpoints (onder `paths:`)
Vervang of voeg deze sectie toe aan je `paths` in het bovenstaande document.
```yaml
paths:
/gebruikers:
get:
tags:
- Gebruikers
summary: Haal een lijst met alle gebruikers op
description: Geeft een gepagineerde lijst terug van alle geregistreerde gebruikers in het systeem.
parameters:
- name: page
in: query
description: Paginanummer voor paginatie.
required: false
schema:
type: integer
default: 1
- name: limit
in: query
description: Aantal resultaten per pagina.
required: false
schema:
type: integer
default: 10
responses:
'200':
description: Succesvol een lijst met gebruikers opgehaald.
content:
application/json:
schema:
$ref: '#/components/schemas/GebruikersLijst'
'401':
$ref: '#/components/responses/NietGeautoriseerd'
post:
tags:
- Gebruikers
summary: Maak een nieuwe gebruiker aan
description: Maak een nieuwe gebruiker aan in het systeem.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/NieuweGebruikerInput'
example: # Request Body Voorbeeld
{
"email": "nieuwe.gebruiker@voorbeeld.nl",
"wachtwoord": "SterkWachtwoord123!",
"naam": "Jan Jansen",
"rol": "gebruiker"
}
responses:
'201':
description: Gebruiker succesvol aangemaakt.
content:
application/json:
schema:
$ref: '#/components/schemas/Gebruiker'
'400':
description: Ongeldig invoer. Bijv. ontbrekende velden of ongeldig e-mailformaat.
/gebruikers/{id}:
get:
tags:
- Gebruikers
summary: Haal een specifieke gebruiker op
description: Haal de details van één specifieke gebruiker op op basis van hun ID.
parameters:
- name: id
in: path
required: true
description: Unieke identifier van de gebruiker.
schema:
type: string
format: uuid
responses:
'200':
description: Succesvol de gebruiker opgehaald.
content:
application/json:
schema:
$ref: '#/components/schemas/Gebruiker'
'404':
description: Een gebruiker met het opgegeven ID kon niet worden gevonden.
put:
tags:
- Gebruikers
summary: Werk een gebruiker bij
description: Werk de gegevens van een bestaande gebruiker bij.
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/BijgewerkteGebruikerInput'
example: # Request Body Voorbeeld
{
"naam": "Jan de Vries",
"rol": "beheerder"
}
responses:
'200':
description: Gebruiker succesvol bijgewerkt.
content:
application/json:
schema:
$ref: '#/components/schemas/Gebruiker'
'404':
description: Een gebruiker met het opgegeven ID kon niet worden gevonden.
delete:
tags:
- Gebruikers
summary: Verwijder een gebruiker
description: Verwijder een gebruiker permanent uit het systeem.
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
'204':
description: Gebruiker succesvol verwijderd. Er wordt geen content teruggegeven.
'404':
description: Een gebruiker met het opgegeven ID kon niet worden gevonden.
```
---
### Stap 3: Definieer Schema's en Response Voorbeelden (onder `components:`)
Voeg deze componenten toe aan je document om de herbruikbare onderdelen te definiëren.
```yaml
components:
schemas:
# INPUT SCHEMA'S
NieuweGebruikerInput:
type: object
required:
- email
- wachtwoord
- naam
properties:
email:
type: string
format: email
example: voorbeeld@email.nl
wachtwoord:
type: string
format: password
example: EenVeiligWachtwoord!123
minLength: 8
naam:
type: string
example: Marieke Smit
rol:
type: string
enum: [gebruiker, beheerder, admin]
default: gebruiker
BijgewerkteGebruikerInput:
type: object
properties:
naam:
type: string
example: Marieke de Vries-Smit
rol:
type: string
enum: [gebruiker, beheerder, admin]
# OUTPUT SCHEMA'S
Gebruiker:
type: object
properties:
id:
type: string
format: uuid
example: "123e4567-e89b-12d3-a456-426614174000"
email:
type: string
format: email
example: voorbeeld@email.nl
naam:
type: string
example: Marieke Smit
rol:
type: string
example: beheerder
aangemaaktOp:
type: string
format: date-time
example: "2023-10-05T14:30:00Z"
GebruikersLijst:
type: object
properties:
gebruikers:
type: array
items:
$ref: '#/components/schemas/Gebruiker'
paginatie:
$ref: '#/components/schemas/Paginatie'
Paginatie:
type: object
properties:
huidigePagina:
type: integer
example: 1
totaalPaginas:
type: integer
example: 5
totaalGebruikers:
type: integer
example: 42
responses:
NietGeautoriseerd:
description: |
Verzoek niet geautoriseerd. Het access token ontbreekt, is ongeldig of is verlopen.
content:
application/json:
schema:
type: object
properties:
error:
type: string
example: "Unauthorized"
message:
type: string
example: "Authenticatie is vereist om toegang te krijgen tot deze resource."
securitySchemes:
BearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
description: >
Voer je JWT token in. Gebruik het format **Bearer <JWT>**.
Verkrijg een token via het inlog-endpoint.
```
---
### Stap 4: Authenticatie Vereisten Globaal Instellen
Voeg aan de **root** van je OpenAPI document (meestal onder `info`) een globale security directive toe.
```yaml
# ... (info, servers, tags)
security:
- BearerAuth: [] # Dit maakt authenticatie voor ALLE endpoints verplicht.
# Je kunt dit ook per endpoint overschrijven door een lege array `security: []` te gebruiken.
```
---
### Stap 5: De Documentatie Genereren en Weergeven
Kies een van de volgende tools om je `openapi.yaml` bestand tot leven te brengen.
**Optie A: Swagger UI (Interactief en voor ontwikkeling)**
Swagger UI is perfect om je API interactief te testen.
1. **Installeer de package:** `npm install swagger-ui-express`
2. **Server setup (Node.js/Express voorbeeld):**
```javascript
const express = require('express');
const swaggerUi = require('swagger-ui-express');
const YAML = require('yamljs');
const app = express();
const openApiDocumentatie = YAML.load('./openapi.yaml'); // Laad je YAML bestand
app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(openApiDocumentatie));
app.listen(3000, () => console.log('Server draait op http://localhost:3000'));
```
3. Bezoek `http://localhost:3000/api-docs`.
**Optie B: Redoc (Schoon en voor eindgebruikers)**
Redoc biedt een zeer schone, statische en gebruiksvriendelijke weergave.
1. **Gebruik de Redoc CLI:** `npm install -g redoc-cli`
2. **Genereer een standalone HTML file:**
```bash
redoc-cli bundle openapi.yaml --output doc.html
```
3. Open het gegenereerde `doc.html` bestand in je browser of host het statisch.
**Optie C: Online Editors (Snel en eenvoudig)**
* **Swagger Editor:** https://editor.swagger.io/ - Plak je YAML code om een live voorbeeld te zien en valideren.
* **Redocly Demo:** https://redocly.github.io/redoc/ - Werkt ook door je raw YAML content te plakken.
### Belangrijke Tips voor Heldere Documentatie
1. **Wees Consistent:** Houd dezelfde terminologie en structuur aan in alle endpointbeschrijvingen.
2. **Gebruik Voorbeelden Rijkelijk:** Zoals hierboven getoond, zijn `example` velden onmisbaar voor begrip.
3. **Documenteer Foutscenarios:** Beschrijf niet alleen succes (200), maar ook veelvoorkomende fouten (400, 401, 403, 404, 500).
4. **Valideer je Specificatie:** Gebruik de Swagger Editor of een validator om syntaxfouten in je YAML/JSON te vinden.
Met deze structuur heb je een complete, professionele en zeer duidelijke API-documentatie die zowel voor ontwikkelaars als eindgebruikers begrijpelijk is.

