Mit Springboot und IntelliJ. Diese Übung baut auf der letzten bbw-320-restintro
auf.
-
Sie schreiben selbst einen API-Contract gemäss OpenAPI Standard (OAS 3.0.3).
-
Sie erweitern eine bestehende OpenAPI Spezifikation entsprechend dem bestehenden Code
-
Studiere den Code in
PonyController
. Zusätzlich vorhanden ist eine@CrossOrigin
-Annotation für CORS-Support. Starte den Server und schreibe die.http
-Requests fertig. -
Gewinne eine Übersicht über den Sinn von OAS auf https://www.wallarm.com/what/what-is-openapi
-
Schau dir den Beginn der OpenAPI Spezifikation in
openapi-spec.yaml
an.-
IntelliJ hat built-in OpenAPI-Support und zeigt eine klickbare UI Alternative.
-
Alternativ kann es ein .http-Request-Snipped erstellen (linker Rand)
-
Alternativ kann auch der Online Swagger Editor genutzt werden: https://editor.swagger.io/
-
-
Als ersten Endpunkt schreiben wir den
GET /api/ponies
:-
Erstelle einen neuen
/api/ponies:
Endpunkt unterpaths:
(das ist einget:
). Siehe https://swagger.io/docs/specification/paths-and-operations/ -
Definiere das
PonyDto
untercomponents.schemas.PonyDto
ähnlich wieSampleError
. SieheObjects
in https://swagger.io/docs/specification/data-models/data-types/ -
Definiere die Response (ein 200er
application/json
). In diesem Fall ist die Response einarray
(eine Liste vonPonyDto
).application/json: schema: type: array items: $ref: '#/components/schemas/PonyDto'
-
Siehe
Reusing Responses
in https://swagger.io/docs/specification/describing-responses/
-
-
Wir wollen nun alle weiteren Operationen definieren und testen (
POST /api/ponies
usw). Weitere Hilfestellungen:-
Ein allgemeines OAS 3.0 Tutorial: https://support.smartbear.com/swaggerhub/docs/tutorials/openapi-3-tutorial.html
-
Eine grosse Beispielspezifikation: https://petstore3.swagger.io/ sowie das yaml: https://github.com/swagger-api/swagger-petstore/blob/master/src/main/resources/openapi.yaml
-
OpenApi Spezifikation 3.0.3 (das ist nicht die Neuste): https://swagger.io/specification/v3/
Spezifikationen sind meist schwierig zu lesen, wichtig sind vorerst:Paths Object
,Path Item Object
,Operation Object
undComponents Object
. Besonders hilfreich sind die yaml-Beispiele undCtrl-F
. -
Validiere die Spec mit dem
openApiValidate
-task imbuild.gradle
.
-