Ontwerp een Mock API voor Geautomatiseerde Validatie van API-specificaties
description
Met deze prompt kan ik mijn API-specificaties automatisch controleren op fouten en inconsistenties, waardoor ontwikkelingsfouten sneller worden opgespoord en opgelost. Dit bespaart tijd en voorkomt problemen in latere test- en productieomgevingen. Het biedt ook concrete verbeteringen en voorbeelden, wat beter is dan handmatige validatie.
prompt
Help me een mock API te ontwerpen die automatisch API-specificaties valideert en feedback geeft over inconsistenties of ontbrekende elementen. API-specificatie: <voer hier de API-specificatie in, bv. OpenAPI YAML of JSON>. Welke validatie ...
try_prompt
generate_helper
disclaimerOnPageApi
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Hier is een ontwerp voor een mock API die automatisch API-specificaties valideert en feedback geeft over inconsistenties of ontbrekende elementen op basis van jouw opgegeven specificatie en regels:
1. **Validatie van API-specificatie**
- Controleer of de specificatie geldig is volgens OpenAPI 3.0.0.
- Controleer of alle verplichte velden aanwezig zijn (bijvoorbeeld: `info`, `paths`, etc.).
- Controleer of de response codes correct zijn (bijvoorbeeld: aanwezigheid van '200' en '404' waar nodig).
- Controleer of de responses de juiste beschrijvingen en schema’s bevatten.
2. **Specifieke regels voor /items GET**
- **Verplichte velden:**
- In de request body of queryparameters (indien van toepassing):
- `email` moet aanwezig zijn, moet van het type string zijn en verplicht.
- In de responses:
- Bij een succesvolle respons ('200'):
- Response moet een object of array bevatten met een `email` veld van type string.
- Bij niet gevonden ('404'):
- Response moet aanwezig zijn en een correcte beschrijving bevatten.
3. **Automatische feedback en aanbevelingen**
- Als `email` niet aanwezig is of niet het juiste type, adviseer dan om het toe te voegen en voorbeeldwaarden te geven.
- Als de response codes niet compleet zijn, stel voor om een '404' response toe te voegen met een passende beschrijving en voorbeeld.
- Aanbevelingen voor verbetering van de specificatie:
- Voeg `parameters` toe voor `email` in query of path.
- Voeg voorbeeldwaarden toe in request en response schemas.
- Documenteer duidelijk de structuur van de response.
4. **Voorbeeld van een verbeterde API-specificatie**:
```yaml
openapi: 3.0.0
info:
title: Voorbeeld API
version: 1.0.0
paths:
/items:
get:
parameters:
- name: email
in: query
required: true
schema:
type: string
description: Emailadres van de gebruiker
example: voorbeeld@voorbeeld.com
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
items:
type: array
items:
type: object
properties:
email:
type: string
example: gebruiker@voorbeeld.com
'404':
description: Niet gevonden
content:
application/json:
schema:
type: object
properties:
error:
type: string
example: Item niet gevonden
```
5. **Voorbeeldrequests en responses**
**Correct request:**
```http
GET /items?email=voorbeeld@voorbeeld.com
```
**Correct response (200):**
```json
{
"items": [
{
"email": "gebruiker@voorbeeld.com"
}
]
}
```
**Response bij niet gevonden (404):**
```json
{
"error": "Item niet gevonden"
}
```
---
**Kort samengevat:**
Gebruik een script of tool die je OpenAPI-specificatie kan valideren, en controleer of de vereiste velden en response codes aanwezig zijn. Voeg voorbeeldwaarden toe voor duidelijkheid. Verbeter de specificatie door parameters en responses volledig te definiëren, inclusief voorbeeldgegevens.
provider: deepseek
model: deepseek-chat
Op basis van je OpenAPI 3.0.0 specificatie heb ik een mock API-ontwerp gemaakt met validatieregels en feedbacksysteem:
## Mock API Ontwerp
**Basis URL**: `https://api.voorbeeld.com/v1`
### Validatieregels Geïmplementeerd:
1. **Request Validatie**:
- Verplichte `email` veld (string format)
- Email format validatie (regex pattern)
- Response code `404` validatie voor GET /items
2. **Response Validatie**:
- Status code consistentie
- Response schema validatie
- Verplichte velden in response bodies
### Feedback Endpoints:
```yaml
POST /validate/request
- Valideert incoming requests tegen de specificatie
- Retourneert foutmeldingen bij invalid requests
GET /validate/specification
- Analyseert de volledige API-specificatie
- Identificeert ontbrekende elementen en inconsistenties
```
### Voorbeeld Implementatie:
```javascript
// Mock middleware voor validatie
app.use('/items', (req, res, next) => {
const errors = [];
// Email validatie
if (!req.body.email) {
errors.push('VERPLICHT: email veld ontbreekt');
} else if (typeof req.body.email !== 'string') {
errors.push('TYPE FOUT: email moet string zijn');
} else if (!isValidEmail(req.body.email)) {
errors.push('FORMAT FOUT: ongeldig email format');
}
if (errors.length > 0) {
return res.status(400).json({
validation_errors: errors,
suggestions: ['Voeg email validatie toe in request body']
});
}
next();
});
```
### Aanbevelingen voor Verbetering:
1. **Ontbrekende Elementen**:
- ✗ **404 response ontbreekt** voor GET /items
- ✗ **Request parameters** niet gedefinieerd
- ✗ **Security schema** niet geconfigureerd
2. **Verbeteringsvoorstellen**:
```yaml
paths:
/items:
get:
parameters:
- name: email
in: query
required: true
schema:
type: string
format: email
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
items:
type: array
items:
type: object
'404':
description: Item niet gevonden
```
### Voorbeeld Correcte Request:
```http
GET /items?email=gebruiker@voorbeeld.com
Accept: application/json
```
### Voorbeeld Correcte Response:
```json
// 200 Response
{
"items": [
{
"id": 1,
"name": "voorbeeld item",
"email": "gebruiker@voorbeeld.com"
}
]
}
// 404 Response
{
"error": "Niet gevonden",
"message": "Geen items gevonden voor opgegeven criteria"
}
```
### Validatie Feedback Voorbeeld:
```json
{
"is_valid": false,
"errors": [
{
"path": "paths./items.get.responses",
"message": "Response code 404 ontbreekt"
},
{
"path": "paths./items.get.parameters",
"message": "Email parameter niet gedefinieerd"
}
],
"suggestions": [
"Voeg 404 response toe voor niet-gevonden items",
"Definieer email als required query parameter",
"Overweeg paginatie parameters toe te voegen (limit, offset)"
]
}
```
Dit ontwerp zorgt voor automatische validatie en geeft duidelijke feedback om je API-specificatie te verbeteren.