首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何为NestJS请求体/Swagger提供多个DTO

如何为NestJS请求体/Swagger提供多个DTO
EN

Stack Overflow用户
提问于 2022-05-13 16:35:49
回答 1查看 1.9K关注 0票数 1

所以我有一条可以接受两个不同的DTO的路线,我很难让这两个DTO连接/显示在swagger上。我正在使用NestJS的swagger插件。我知道在原始的狂妄自大中你可以做一些类似的事情。有什么想法吗?

代码语言:javascript
运行
复制
Request:
  oneOf:
    - $ref: "#/components/schemas/RequestOneType"
    - $ref: "#/components/schemas/RequestTwoType"

我现在的任何一个例子都是

异步initApp(@Body() req: RequestOneDto Body,@Res({ passthrough: true }) res: Response) {

}

导出类RequestOneDto { @Length(1,10);名称: string

@Max(10)值: number }

导出类RequestTwoDto { @Length(1,15);名称: string

@最大值(15)值:编号

州:‘纽约’}

EN

回答 1

Stack Overflow用户

发布于 2022-05-13 20:05:44

你试过这样做吗?

代码语言:javascript
运行
复制
@ApiExtraModels(RequestOneDto, RequestTwoDto)
@ApiBody({
  schema: {
    oneOf: [
      {
        $ref: getSchemaPath(RequestOneDto),
      },
      {
        $ref: getSchemaPath(RequestTwoDto),
      },
    ],
  },
})
async initApp(@Body() body: RequestOneDto | RequestTwoDto) {}

您可以从ApiBody, ApiExtraModels中导入@nestjs/swagger

如果您不想显式地包含这些模型,您可以在一个地方注册它们

代码语言:javascript
运行
复制
const document = SwaggerModule.createDocument(app, options, {
  extraModels: [RequestOneDto, RequestTwoDto],
});

下面是更多的信息

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72232818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档