Creëer een OpenAPI-specificatie voor API-caching en prestatieoptimalisatie
description
Met deze prompt kan de gebruiker een OpenAPI-specificatie maken die expliciet caching en prestatieoptimalisatie beschrijft, wat helpt om de responstijden van de API te verbeteren en serverbelasting te verminderen. Dit voorkomt dat gebruikers handmatig deze complexe aspecten moeten toevoegen en zorgt voor betere documentatie en implementatie van cachingregels.
prompt
Help me een OpenAPI-specificatie te maken die cachingstrategieën en prestatieoptimalisaties beschrijft voor mijn API.
API Naam: <voer de naam van mijn API in>
Caching Mechanismen (bijv. server-side caching, client-side caching, CDN): <beschrijf de caching methoden>
Cache Controle Headers (bijv. Cache-Control, ETag): <specificeer de headers die gebruikt worden voor cache ...
try_prompt
generate_helper
disclaimerOnPageApi
tags
ai_answers
provider: openai
model: gpt-4.1-nano
openapi: 3.0.3
info:
titel: ShopAPI
versie: 1.0.0
beschrijving: >
API voor ShopAPI met cachingstrategieën en prestatieoptimalisaties.
- Server-side caching met Memcached
- Client-side caching via Cache-Control en ETag
- Endpoints: /producten en /categorieën
- TTL: 30 minuten (1800 seconden)
- Invalideren bij databasemutaties
- Authenticatie via API-sleutel
servers:
- url: https://api.shopapi.example.com
beschrijving: Productie server
components:
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: X-API-Key
responses:
CachingHeaders:
description: >
Caching headers voor endpoints met server-side en client-side caching.
headers:
Cache-Control:
description: >
Header die de caching regels aangeeft. Hier ingesteld op max-age=1800 (30 minuten).
schema:
type: string
example: "public, max-age=1800"
ETag:
description: >
ETag header voor cache-validatie.
schema:
type: string
example: "W/\"123456789\""
security:
- ApiKeyAuth: []
paths:
/producten:
get:
summary: "Get lijst van producten"
description: >
Endpoint met server-side caching via Memcached en client-side caching.
security:
- ApiKeyAuth: []
responses:
'200':
description: "Lijst van producten"
headers:
Cache-Control:
$ref: '#/components/responses/CachingHeaders/headers/Cache-Control'
ETag:
$ref: '#/components/responses/CachingHeaders/headers/ETag'
content:
application/json:
schema:
type: array
items:
type: object
properties:
id:
type: integer
description: "Product ID"
naam:
type: string
description: "Naam van het product"
prijs:
type: number
format: float
description: "Prijs van het product"
x-cache-ttl: 1800 # TTL in seconden
x-cache-invalidation: >
Invalideren bij databasemutaties voor producten.
/categorieën:
get:
summary: "Get lijst van categorieën"
description: >
Endpoint met server-side caching via Memcached en client-side caching.
security:
- ApiKeyAuth: []
responses:
'200':
description: "Lijst van categorieën"
headers:
Cache-Control:
$ref: '#/components/responses/CachingHeaders/headers/Cache-Control'
ETag:
$ref: '#/components/responses/CachingHeaders/headers/ETag'
content:
application/json:
schema:
type: array
items:
type: object
properties:
id:
type: integer
description: "Categorie ID"
naam:
type: string
description: "Naam van de categorie"
x-cache-ttl: 1800 # TTL in seconden
x-cache-invalidation: >
Invalideren bij databasemutaties voor categorieën.
# Opmerkingen:
# - Server-side caching wordt beheerd via Memcached en wordt geconfigureerd op de backend.
# - Client-side caching wordt gestuurd via Cache-Control en ETag headers.
# - TTL voor cache is ingesteld op 1800 seconden (30 minuten).
# - Cache wordt geïnvalideerd bij mutaties in de database, zoals updates of deleties.
# - Authenticatie wordt geregeld via een API-sleutel in de header X-API-Key.
provider: deepseek
model: deepseek-chat
```yaml
openapi: 3.0.3
info:
title: ShopAPI
description: API voor winkelbeheer met geavanceerde cachingstrategieën en prestatieoptimalisaties
version: 1.0.0
contact:
name: API Support
email: support@shopapi.com
servers:
- url: https://api.shopapi.com/v1
description: Productieserver
components:
securitySchemes:
ApiKeyAuth:
type: apiKey
name: X-API-Key
in: header
description: API sleutel voor authenticatie
parameters:
CacheControl:
name: Cache-Control
in: header
required: false
schema:
type: string
description: Cache-control directives voor client-side caching
ETagHeader:
name: ETag
in: header
required: false
schema:
type: string
description: ETag voor conditionele requests
headers:
CacheControlResponse:
description: Cache-control header voor caching instructies
schema:
type: string
example: "max-age=1800, public"
ETagResponse:
description: ETag header voor resource versie
schema:
type: string
example: "\"abc123\""
responses:
CachedResponse:
description: Succesvolle response met caching headers
headers:
Cache-Control:
$ref: '#/components/headers/CacheControlResponse'
ETag:
$ref: '#/components/headers/ETagResponse'
content:
application/json:
schema:
type: object
security:
- ApiKeyAuth: []
paths:
/producten:
get:
summary: Haal alle producten op
description: |
Retourneert een lijst van alle producten met server-side caching via Memcached.
Cache wordt automatisch geïnvalideerd bij databasemutaties.
**Caching Details:**
- Server-side: Memcached met 30 minuten TTL
- Client-side: Cache-Control headers voor browser caching
- Cache invalidatie: Automatisch bij wijzigingen in productdata
tags:
- Producten
parameters:
- $ref: '#/components/parameters/CacheControl'
- $ref: '#/components/parameters/ETagHeader'
responses:
'200':
$ref: '#/components/responses/CachedResponse'
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Product'
metadata:
$ref: '#/components/schemas/PaginationMetadata'
'304':
description: Niet gewijzigd (gebruik cached versie)
headers:
Cache-Control:
$ref: '#/components/headers/CacheControlResponse'
ETag:
$ref: '#/components/headers/ETagResponse'
'401':
description: Ongeldige API sleutel
'500':
description: Interne serverfout
/categorieën:
get:
summary: Haal alle categorieën op
description: |
Retourneert een lijst van alle productcategorieën met geoptimaliseerde caching.
**Caching Strategie:**
- Memcached server-side cache (30 minuten TTL)
- ETag ondersteuning voor conditionele requests
- Automatische cache invalidatie bij categorie wijzigingen
tags:
- Categorieën
parameters:
- $ref: '#/components/parameters/CacheControl'
- $ref: '#/components/parameters/ETagHeader'
responses:
'200':
$ref: '#/components/responses/CachedResponse'
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Categorie'
'304':
description: Niet gewijzigd (gebruik cached versie)
headers:
Cache-Control:
$ref: '#/components/headers/CacheControlResponse'
ETag:
$ref: '#/components/headers/ETagResponse'
'401':
description: Ongeldige API sleutel
components:
schemas:
Product:
type: object
properties:
id:
type: integer
format: int64
example: 1
naam:
type: string
example: "iPhone 14"
prijs:
type: number
format: float
example: 999.99
categorie_id:
type: integer
example: 1
voorraad:
type: integer
example: 50
aangemaakt_op:
type: string
format: date-time
bijgewerkt_op:
type: string
format: date-time
Categorie:
type: object
properties:
id:
type: integer
format: int64
example: 1
naam:
type: string
example: "Elektronica"
omschrijving:
type: string
example: "Elektronische apparaten en accessoires"
aangemaakt_op:
type: string
format: date-time
bijgewerkt_op:
type: string
format: date-time
PaginationMetadata:
type: object
properties:
pagina:
type: integer
example: 1
limiet:
type: integer
example: 25
totaal:
type: integer
example: 150
heeft_volgende:
type: boolean
example: true
x-caching-config:
server_side:
mechanism: "Memcached"
default_ttl: 1800
endpoints:
- "/producten"
- "/categorieën"
cache_headers:
- "Cache-Control"
- "ETag"
cache_invalidation:
strategy: "database_mutation"
triggers:
- "INSERT"
- "UPDATE"
- "DELETE"
performance_optimizations:
- "Response compression"
- "ETag conditional requests"
- "Proper cache headers"
- "Database query optimization"
```
Deze OpenAPI-specificatie beschrijft uitgebreid de cachingstrategieën en prestatieoptimalisaties voor je ShopAPI. Belangrijke kenmerken:
**Caching Implementatie:**
- Server-side caching met Memcached (30 minuten TTL)
- Cache-Control en ETag headers voor client-side caching
- Automatische cache invalidatie bij databasemutaties
**Beveiliging:**
- API key authenticatie via header
**Documentatie:**
- Duidelijke beschrijvingen van caching mechanismen per endpoint
- Aangepaste extensie `x-caching-config` voor caching configuratie
- Response schema's voor gestructureerde data
De specificatie is volledig in het Nederlands en volgt OpenAPI 3.0.3 standaarden.