

Documenting met Swagger en Testing met JEST
Documenting met Swagger en Testing met JEST
INTRODUCTIE


Installatie
Installeer swagger-ui-express
npm install swagger-ui-express
Installeer JEST
npm install jest

Voorbereiding
- Maak voor Swagger een docs folder aan met daarin de folder paths en swagger.js
import swaggerDefinition from './docs/swagger.js';
app.use("/api-docs", swaggerUi.serve, swaggerUi.setup(swaggerDefinition));
- Voeg nu de Swagger implementatie toe aan de app.js

Documenting met Swagger en Testing met JEST
SWAGGER


Swagger allows you to describe the structure of your APIs so that machines can read them. Swagger does this by asking your API to return a YAML or JSON that contains a detailed description of your entire API. This file is essentially a resource listing of your API which adheres to OpenAPI Specification.

Basis Structuur
- We gebruiken de OpenAPI spec om onze structuur op te zetten.
- Maak de basisstructuur aan in swagger.js met volgende properties
export default {
openapi: "3.0.0",
info: {},
servers: [],
tags: [],
paths: {},
components: {}
}

Basis Structuur
- We gebruiken de OpenAPI spec om onze structuur op te zetten.
- Maak de basisstructuur aan in swagger.js met volgende properties
export default {
openapi: "3.0.0",
info: {},
servers: [],
tags: [],
paths: {},
components: {}
}

Basis Structuur


Basis Structuur
- Meer informatie over de verschillende properties van deze onderdelen kan je hier vinden
- Modeleer je data in schemas.js en importeer deze in swagger.js
import schemas from "./schemas.js";
components: {
schemas,
}

Schemas
- Voorbeeld van een User Schema
export default {
"User": {
properties: {
id: { type: "number" },
firstname: { type: "string" },
lastname: { type: "string" },
}
}
)

Schemas
- We maken een nieuwe schema voor UserMeta
export default {
[...],
"UserMeta": {
properties: {
id: { type: "number" },
address: { type: "string" },
zipCode: { type: "string" },
city: { type: "string" }
}
},
)

Schemas
- We kunnen UserMeta koppelen aan User via de $ref property
export default {
"User": {
properties: {
id: { type: "number" },
firstname: { type: "string" },
lastname: { type: "string" },
user_meta: {
$ref: '#/components/schemas/UserMeta'
},
}
},
[...],
)

Schemas
- Bekijken we Swagger, dan worden onze schema's opgelijst


Oefening: Schemas
- Maak nu een schema voor:
- UserMetaInput
- Alle Input types zijn types zonder het id, gebruiken we enkel om data toe te voegen
- Role
- RoleInput
- Interest
- UserInput
- UserMetaInput

Paths
- We maken nu de verschillende API paths aan in de paths folder.
- POST - user
- GET - user
- Maak nu ook de paden aan voor
- DELETE - user (tip: maak gebruik van een parameter)
- DELETE - interest/:id
- PUT - interest/:id
- GET - interest
- POST - interest
- GET - roles
Documenting met Swagger en Testing met JEST
By timdpaep
Documenting met Swagger en Testing met JEST
- 358