@duplojs/swagger
v1.0.5
Published
[![NPM version](https://img.shields.io/npm/v/@duplojs/swagger)](https://www.npmjs.com/package/@duplojs/swagger)
Downloads
785
Readme
duplojs-swagger
Instalation
npm i @duplojs/swagger
Implémentation
import Duplo, {zod} from "@duplojs/duplojs";
import duploSwagger, {SwaggerDescription, SwaggerResponses, SwaggerTag, SwaggerIgnoreInheritDescriptor} from "@duplojs/swagger";
const duplo = Duplo({port: 1506, host: "0.0.0.0"});
duplo.use(duploSwagger, {
swaggerSpec: {
tags: [
{name: "user", description: "Route to iteract with user."}
],
},
});
const isOdd = duplo
.createChecker(
"isOdd",
new SwaggerDescription("verif if input is odd")
)
.handler((input: number, output, options) => {
if(input % 2 == 1) return output("odd", input);
else return output("notOdd", input);
})
.build();
duplo.declareRoute("GET", "/user/{id}")
.extract({
params: {
id: zod.enum(["1", "2"]),
}
})
.check(
isOdd,
{
input: (pickup) => Number(pickup("id")),
catch: (res, info) => res.code(400).info(info).send(),
},
new SwaggerIgnoreInheritDescriptor(),
new SwaggerDescription("add checker isOdd"),
new SwaggerResponses({code: 400, description: "Id is not odd."}),
)
.handler(
({pickup}, res) => {
res.code(200).send();
},
new SwaggerTag("user"),
new SwaggerDescription("Get user by name"),
new SwaggerResponses({code: 200, description: "All is good."}),
);
duplo.launch();
Implémentation globales
duplo.use(duploSwagger, {
...
globals: true
});
tsconfig.json
{
"compilerOptions": {
...
"types": [
"@duplojs/swagger/globals"
],
}
}
Génération open-api json
(node | tsx | ts-node) index.ts --swagger [--only-generate]