5. Genereer API code
Nu we een gevalideerde OpenAPI Specification hebben, kunnen we automatisch servercode genereren. We gebruiken hiervoor OpenAPI Generator, een populaire open-source tool die code kan genereren in tientallen programmeertalen en frameworks.
Voorbereiding
Zorg dat we de volgende zaken klaar hebben:
- Het OAS bestand - Sla de OAS uit de Swagger Editor op als
openapi.json - Node.js - Controleer met
node --versiondat Node.js 22+ geïnstalleerd is. Dit hebben we nodig voor denpxtooling en voor de NestJS-template. Download Node.js - Java - OpenAPI Generator is een Java applicatie. Controleer met
java --versiondat Java 11+ geïnstalleerd is. Download Java - Runtime voor je template - Kies je later voor een Go-, Java-, Rust- of Python-template? Zorg dan ook dat die runtime lokaal beschikbaar is. De template-repository noemt de actuele minimale versies.
We gebruiken npx om tools uit te voeren zonder ze eerst globaal te
installeren. Met npx worden packages automatisch gedownload en uitgevoerd. De
eerste keer kan dit even duren, daarna worden ze gecached.
Bundlen
Onze OAS bevat $ref verwijzingen naar externe URL's, zoals
https://static.developer.overheid.nl/adr/components.yaml voor standaard
headers en error responses. Dit is handig omdat we zo herbruikbare
ADR-componenten kunnen gebruiken, maar de OpenAPI Generator kan niet overweg met
externe referenties.
We moeten de OAS daarom eerst bundlen. Dit betekent dat externe verwijzingen
worden opgehaald en als interne $ref verwijzingen in het document worden
opgenomen. Het resultaat is een zelfstandig bestand zonder externe
afhankelijkheden.
Dit doen we met Redocly CLI:
npx @redocly/cli bundle ./openapi.json --output openapi.bundled.json --ext json
Dit haalt externe referenties op en zet ze om naar interne $ref verwijzingen
binnen het document. Gebruik openapi.bundled.json als input voor de volgende
stappen.
Valideer de gebundelde OAS ook nog een keer voordat je code genereert:
npx @developer-overheid-nl/don-checker@latest validate \
--ruleset adr-21 \
--input openapi.bundled.json
Sommige tools ondersteunen ook interne $ref verwijzingen niet. In dat geval
kunnen we de --dereferenced flag toevoegen om alles volledig plat te slaan:
npx @redocly/cli bundle ./openapi.json --output openapi.bundled.json --ext json --dereferenced
Het resultaat bevat dan geen enkele $ref meer; alle schemas zijn volledig
inline geplaatst.
Code genereren
Stap 1: Clone de codegen templates
We hebben aangepaste templates gemaakt die beter aansluiten bij de ADR en de design-first workflow. Clone de template-repository naar de werkdirectory:
- SSH
- HTTPS
- GitHub CLI
git clone git@github.com:developer-overheid-nl/codegen-templates.git
git clone https://github.com/developer-overheid-nl/codegen-templates.git
gh repo clone developer-overheid-nl/codegen-templates