1.0.4 • Published 29 days ago
@duplojs/swagger v1.0.4
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]