在swagger中使用joi模式

enxuqcxy  于 2022-11-06  发布在  其他
关注(0)|答案(1)|浏览(147)

在node.js,我刚刚开始使用swagger,我想将我用'joi'创建的参数验证模式与swagger集成。
https://www.npmjs.com/package/joi-to-swagger,但我不明白如何在swagger中使用生成的对象...
我就是这样使用霸气的:

swaggerAutogen(outputFile, endpointsFiles, doc);

这是我如何使用joi-to-swagger:

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

如何将第一步中创建的swagger-output.json与第二步中创建的swagger对象集成在一起?
谢谢

7ivaypg9

7ivaypg91#

你可以这样做
1.使用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-to-swagger生成的Swagger架构对象。

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');
});

相关问题