簡體   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