# Documentación
# Swagger

Swagger es una serie de reglas, especificaciones y herramientas que nos ayudan a documentar nuestras APIs.
# Instalación
sudo npm i @hapi/inert@5.2.2 @hapi/vision@5.5.4
sudo npm i hapi-swagger@10.2.0
# Configuracion
const Pack = require('./package')
const Vision = require('@hapi/vision')
const Inert = require('@hapi/inert')
const HapiSwagger = require('hapi-swagger')
// Dentro de la funcion que inicia el server:
const swaggerOptions = {
info: {
title: 'API Documentation',
version: Pack.version
}
}
await server.register([
Inert,
Vision,
{
plugin: HapiSwagger,
options: swaggerOptions
}
])
# Uso
{
method: "POST",
path: "/v1/courses",
handler: handlers.createCourses,
options: {
cors: true,
tags: ["api"], // bandera para swagger
description: "Add a course",
validate: {
payload: courseSchema.create,
failAction: (req, h, err) => {
throw err.details[0].message
}
},
response: {
failAction: (req, h, err) => {
return Boom.badRequest(err.details[0].message)
},
status: {
201: Joi.object({
uuid: Joi.string().uuid({ version: 'uuidv4' }),
message: Joi.string()
}),
400: Joi.object({
statusCode: Joi.number(),
error: Joi.string(),
message: Joi.string()
}),
500: Joi.object({
statusCode: Joi.number(),
error: Joi.string(),
message: Joi.string()
})
}
}
}
}
Nota
Swagger utiliza los campos description y response para mostrarlas en la documentacion, de todo aquel endpoint con el tag 'api'.
← Validaciones Test →