问题标签 [nestjs-swagger]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
13913 浏览

javascript - 为什么 dto 中的类型在 swagger 中不可见?

我正在根据此文档在我的小型 Nest.js 应用程序中设置 swagger 文档:https ://docs.nestjs.com/recipes/swagger

如何设置 dto 以在 swagger 中正确显示架构?更具体地说,嵌套类型。它仅显示顶级键。如果其中一个键是某种类型的,它会将其显示为空对象。这就是我的意思:

dto:

昂首阔步:

招摇示例值的预期结果:

这是功能:

我尝试了什么:

  • 当我将类型替换为 dto 中的确切参数时,它会以大摇大摆的方式正确显示它。
  • 我对接口进行了 dto 的交叉检查,我在“isOnline”中添加了错误的字段,它找到并标记它,它不好。
  • 架构以大摇大摆的方式显示,但也仅显示顶级,而不是键入的部分。所以它不仅仅是示例值。
  • 检查堆栈溢出;找到了两个相关的线程,但没有一个解决它。一位建议手动创建子 dto 而不是类型。嗯...我最好不要那样做。

我做错了什么,或者错过了文档中的某些内容。或者,该 swagger 模块的解析器在生成 json 时可能无法提取类型/接口。

0 投票
1 回答
2152 浏览

dto - 为什么 DTO 不会在 nestjs 中引发验证错误?

我在我的代码中使用 DTO,并且我得到了预期的响应,但是在代码中 DTO 没有抛出错误,例如

在这个名称中,年龄,品种是一个必填字段,每个都有自己的数据类型,但是在邮递员上运行时,当我没有将所有必填字段或只有一个字段传递到邮递员正文时,我没有收到任何错误,例如需要年龄如果我已经传递了其他两个字段,或者我没有根据数据类型给出参数值,例如:-年龄:二十五,那么它也应该抛出错误,但我没有得到。

所以,这是为

这是我在其中导入类和 Dto 的控制器。

0 投票
1 回答
6850 浏览

postman - NestJS 中的 FileInterceptor 和 Body 问题(在请求中上传文件和数据)

我有以下控制器:

我需要上传一个文件并在同一个查询中提供一些数据。 我想给 api 的数据

因为我要上传文件,所以我这样设置 Postman: 邮递员的第二次设置

第一个问题:如何将文件与图片 n°1 中显示的数据一起发送?

我搜索了另一个 API 请求工具,发现了Postwoman

这是我使用的配置: 女邮递员配置

但是响应总是一样的:它没有检测到数据。(即{ name: foo, color: bar}

在此处输入图像描述

第二个问题:我该如何解决这个问题?是否可以将数据放在文件中?如果可能的话,我怎样才能在 NestJS 中实现这一点?

非常感谢您阅读我的问题:) 任何帮助将不胜感激。

0 投票
1 回答
1794 浏览

typescript - 如何传递嵌套类以输入@ApiOkResponse 或创建适当的自定义装饰器?

背景:

我使用nestjs拦截器将控制器返回的数据放入data属性中并添加一些其他属性。现在我想用@ApiOkResponse它来反映嵌套的属性。

控制器返回

被拦截后返回

我也说了两个类:

挑战

现在我想添加到我的控制器@ApiOkResponse({ type: Intercepted })中,但还要以某种方式指定dataclass 的属性Intercepted应该是 type NotYetIntercepted

我尝试创建一个这样的自定义装饰器:

那没有用。当我删除@Type() => notYetIntercepted)并设置它datadata: notYetIntercepted某种方式工作时(带有打字稿警告),但它将我swagger docs中的所有值覆盖为最后传递给(@CustomApiOkResponse(AnotherNotYetIntercepted))的值。

我知道我可以为每个嵌套数据类型创建一个类,但是有没有更简洁的解决方案?

感谢您的时间

0 投票
1 回答
230 浏览

nestjs-swagger - 我们如何使用 swagger/nestjs 在 API 文档中添加一些自定义错误(相关键)?

我试图在 API Docs 中成功响应后显示错误响应。例如:-

@ApiResponse({status: 401, description: 'invalid_client'}) (它正在工作)

但我想给一个customCode也喜欢: -

@ApiResponse({status: 401, **customCode **: 'invalid_token', description: 'invalid_client'})

但我在添加 customCode 时遇到错误:-

错误是:- '{ status: number; 类型的参数;自定义代码:字符串;描述:字符串;}' 不可分配给“ApiResponseOptions”类型的参数。对象字面量只能指定已知属性,并且“ApiResponseOptions”类型中不存在“customCode”。

我试图从 Nestjs/swagger 链接中找出答案,但找不到此问题的链接。

https://docs.nestjs.com/recipes/swagger#responses

0 投票
0 回答
320 浏览

swagger - 如何将 Swagger 与 Nest.js API 和 SPA 之间共享的 DTO 一起使用?

我有一个带有 Nest.js API 和 Angular SPA 的项目。SPA 用来与 API 通信的 DTO 位于一个名为 Models 的单独项目中,我将其用作依赖项。这样,我只需要在一个地方更改 DTO,并且可以在两个项目中重用它们。

我一直在尝试使用 Swagger 记录我的 API @nestjs/swagger。如果我希望它们的属性在 Swagger 中显示,这个库需要我在我的 DTO 中使用装饰器。

当我这样做时,我的 API 中的一切都按预期工作,但是 Angular SPA 会中断,因为它没有@nestjs/swagger依赖项。即使在将其安装为应用程序的依赖项之后,它仍然需要我安装@nestjs/commonexpressmimesend等,并且我不应该仅仅为了文档而将所有与后端相关的依赖项安装到我的应用程序中。

你们知道如何克服这个问题或其他有关使用 Nest.js 为 API 生成文档的提示吗?

0 投票
2 回答
2294 浏览

nestjs - 从配置中注入 DTO 的默认值

目前,我在我的控制器中使用 DTO 对象,并将它们与类验证器插件配对以解析/验证它们。问题是,我想为某些 DTO 参数分配默认值,但这些值应该来自配置。我需要一些优雅的方法来将这些默认值注入 DTO,并让这些默认值自动填充到各个端点的 swagger 元信息中(我正在使用 nest swagger 插件为我自动应用装饰器)。为了达到预期的结果,我看到了 2 个解决方案,这两个解决方案都需要一些不必要的妥协。

解决方案 1:将配置值注入控制器本身,并在路由处理程序中解析 DTO 后,将参数和 DTO 传递给将在 DTO 上应用它们的方法。但是,为了在 swagger 中记录默认值,我应该手动将“@ApiQuery”属性放在默认值的处理程序上。首先,在这种情况下,我同时使用 DTO 和查询装饰器来专门用于招摇,而且我不确定这是否会起作用。简而言之,这完全是一团糟,我更愿意避免这种“解决方案”。

解决方案 2:完全跳过 DTO 方法并使用单独的查询参数。我可以通过将配置注入控制器来使用默认管道应用默认值。但是,我需要为每个参数应用验证规则,或者无论如何创建一个 DTO,我可以在其上应用验证规则并从查询参数手动构造它。此外,我需要手动记录所有参数,以便招摇过市。

有更好的解决方案吗?

0 投票
1 回答
1028 浏览

jenkins - 在jenkins下找不到Nest.js swagger插件

对于 Nest.js,我正在使用 @nestjs/swagger 插件。一切都在开发中运行良好。在 jekins 中,我正在提取代码并进行构建。为此,我在服务器上安装了 nest cli。我在构建阶段收到此错误:

我究竟做错了什么?服务器是ubuntu 17,在我的nest-cli.json中我有这个:

再次,它在本地运行良好。问题仅在詹金斯工作区。谢谢!

0 投票
0 回答
413 浏览

azure - 使用 Nestjs + Azure 函数配置 swagger

我正在尝试使用本文之后的 azure 函数开发我的nestjs: https ://trilon.io/blog/deploy-nestjs-azure-functions

我在我的应用程序中配置了 Swagger,如下所示:

当我在开发中运行应用程序时,我可以通过导航来访问我的招摇 UI /swagger,但是当我运行时npm run build && func host start,我收到500错误,当我遇到不存在的路线时也会发生这种情况。

在应用程序中注册的所有其他路由都按预期工作。

0 投票
4 回答
2179 浏览

swagger - NestJS swagger-ui-express 包在部署后丢失

我正在使用NestJS版本7.1.0serverless创建 api 文档使用nestjs swagger. 在本地它像冠军一样工作,但在部署后出现错误。

我在这里看到了一些问题,但仍未解决此问题。 https://github.com/nestjs/swagger/issues/277

这是我的package.json

这是配置:

任何帮助!