繁体   English   中英

在 swagger 中使用 joi 模式

[英]Use joi schema in swagger

在 node.js,我刚开始使用 swagger,我想将使用“joi”创建的参数验证模式与 swagger 集成。
https://www.npmjs.com/package/joi-to-swagger但我不明白如何在 Z5DB89E7472F81A4EA6B7A73F7C6729F1 中使用生成的 object ...

这就是我使用 swagger 的方式:

swaggerAutogen(outputFile, endpointsFiles, doc);

这就是我使用 joi-to-swagger 的方式:

const { swagger, components } = j2s(postVersionInfoValidator);

如何将第一步创建的 swagger-output.json 与第二步创建的 swagger object 集成?

谢谢

你可以做这样的事情

  1. 使用 joi joi-to-swagger生成 Swagger 模式
import j2s from 'joi-to-swagger';

const { swagger: swaggerA } = j2s(joiSchemaA);
const { swagger: swaggerB } = j2s(joiSchemaB);
const { swagger: swaggerC } = j2s(joiSchemaC);
  1. 将生成的模式添加到swagger-autogen选项中。 请注意使用@definitions而不是definition 这是为了让我们能够按原样使用从 joi joi-to-swagger生成的 Swagger 模式 object。
import swaggerAutogen from 'swagger-autogen';

const outputFile = './swagger-output.json';
const apiFiles = ['./app.js'];

const doc = {
  info: {
    title: 'Your API',
    ...
  },
  '@definitions': {
    PayloadA: swaggerA,
    PayloadB: swaggerB,
    PayloadC: swaggerC,
  },
  ...
};

swaggerAutogen({ openapi: '3.0.0' })(outputFile, apiFiles, doc);
  1. 将 Swagger 注释添加到您的端点
app.post('/endpoint-a', (res, req) => {
  //  #swagger.summary = 'Perform stuff'
  /*  #swagger.requestBody = {
        required: true,
        schema: { $ref: "#/definitions/PayloadA" },
      }
  */

  res.send('A');
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM