问题标签 [nswag]

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 投票
1 回答
1979 浏览

c# - 如何将 Swagger 与来自 Web API 操作方法的动态参数一起使用?

我以非标准方式编写 Web API 控制器,将参数作为动态对象获取。

这会导致 NSwag 出现问题。因为方法定义中没有参数,NSwag 无法生成需要的东西。

我想知道在这种情况下是否有任何使用 NSwag 的选项。也许我可以将一些属性添加到方法中,以便 NSwag 能够生成 API?

0 投票
2 回答
971 浏览

azure - 使用 Azure Active Directory 和 Swagger 进行客户端凭据授权

需要获取授权令牌才能访问我在 localhost 上运行的应用程序。我在 UseSwaggerUi3 中查询来自 Swagger OAuth2 客户端的令牌的 AAD 令牌端点。我收到端点不允许来自本地主机的跨源请求的 CORS 错误。我怎样才能解决这个问题?

[编辑] 如果我使用 Fiddler 向同一端点发送 POST 请求,我就能够获取令牌。

0 投票
2 回答
2102 浏览

authentication - Asp.Net Web Api 2 的 NSwag 在 swagger gui 中显示安全性

我们已经在我们的项目中安装了 nswag,到目前为止它运行良好。

但是我们所有的功能都使用 api-key 进行保护。

当我从 swagger 中查看演示页面时,我可以看到锁在我需要授权的每个 api 调用的末尾(我认为这就是锁)

https://petstore.swagger.io/#/

在此处输入图像描述

在我们的本地安装中,我们获得了“授权”按钮,我们可以设置密钥,但我不知道如何在 api 调用中激活锁定登录?有我需要设置的属性吗?

0 投票
1 回答
2892 浏览

c# - NSwag Wep Api 2 multipart/form-data 属性/文件上传

我正在尝试使用 NSwag 设置控制器方法,我可以在其中上传多部分/表单数据文件

但我无法通过 NSwag 网络界面上传文件。我认为在 ASP.NET Core 中,您有一个针对此问题的属性,但是如何在 Web Api 2 中获得此支持

0 投票
1 回答
2207 浏览

inheritance - NSwag 继承和多态性

我有一个模型,我从 Azure 中的 .NET Core appservice 提供服务。

它包含从名为 Adjustment 的基本类型派生的类型的列表属性。

我已经为每个派生类型添加了 JsonInheritanceConverter 和 KnownType 属性,但是当我查看 swagger 文档时,我没有看到任何表明它知道继承链的东西。

当我生成一个服务客户端时,部分类似乎没有用 repo 上的这个示例中的 JsonInheritanceConverter 进行装饰:https ://github.com/RSuter/NJsonSchema/wiki/Inheritance

可以肯定的是,当我从 swagger 端点或其他东西生成客户端时,我只是缺少了开关之类的东西。有人遇到过这个问题吗?

namespace AppService.DataAccess.Models { [JsonConverter(typeof(JsonInheritanceConverter), "discriminator")] [KnownType(typeof(Substitution))] [KnownType(typeof(Waiver))] [KnownType(typeof(Exemption))] public class Adjustment: IBase { [Key] public int ID { get; set; } } }

0 投票
1 回答
37 浏览

nswag - 服务器名称与 NSwag/OpenApi 不正确

我们的 api 托管在:https ://oursitename.com

当我们尝试在此处打开 OpenAPI 规范时:https ://oursitename.com/openapi/v1/openapi.json ,我们看到指定的服务器名称不正确:“ https://realsitename.azurewebsites.net ”。

一些附加信息:oursitename.com 是指向 realsitename.azurewebsites.net 的 CNAME 记录。NSwag 以某种方式显示了后者,即使我们通过前者访问我们的网站。

0 投票
0 回答
468 浏览

asp.net-web-api - 使用 NSwag 命令行向生成的 Swagger JSON 文档添加 securityDefinitions

我有一个 Web.Api/OWIN 项目,我正在尝试为其生成 Swagger 规范。

我试图避免将太多的 NSwag 集成到我的项目中;该项目是一个嵌入式 API,我想避免在进程中运行规范文件或 Swagger UI。我仍然必须使用 NSwag 属性来解决无法直接从代码或 XML 注释中解决的问题。

相反,我尝试使用 NSwag 命令行工具生成规范文件,作为构建过程的一部分,我可以将其作为单独的文档进行后处理(最终集成到 DocFX 文档中)。

到目前为止,我已经设法使用nswag webapi2swagger命令来生成我需要的 JSON,但是,它缺少 securityDefinition 部分。

我的端点具有授权属性,我已设法通过该属性使用OperationSecurityScopeProcessor处理器包括在内。SwaggerOperationProcessor

这些授权属性详细信息已成功添加到规范中,但是,生成的规范中缺少 securityDefinition 属性被认为是“无效的”,并且 Swagger 工具不会在文档中呈现授权角色。

SecurityDefinitionAppender在通过 运行进程内时,我使用文档处理器获得了所需的结果UseSwagger,但是,无法为命令行工具指定它,并尝试在 nswag.json 或 .nswag 配置文件中引用它(通过documentProcessorTypes属性) 失败,因为SecurityDefinitionAppender没有无参数构造函数(SwaggerGeneratorCommandBase.cs似乎没有提供一种机制来支持 documentProcessorTypes 的构造函数参数)。

目前,如果我想自动执行此操作,我必须运行一个脚本,在下一个构建步骤之前将必要的静态片段添加到 JSON 输出,但这只是感觉很脏,而且我敢肯定会有更复杂的问题出现这个解决方案不起作用。

当需要构造函数参数时,有没有办法在 NSwag 命令行工具中引用操作和文档处理器,或者,是否有另一种方法可以将 securityDefinition 添加到我的规范文件中,而无需在进程中运行 NSwag?

编辑

根据下面评论中的@RicoSuter 建议,您可以从包含所需位的模板开始,并通过 webApiToSwaggerdocumentTemplate选项提供给 Nswag,而不是对 JSON 进行后处理。

然而,对我来说,解决方案最终是编写我自己的IDocumentProcessor,不需要构造函数参数并做我需要它做的事情。

直到/除非命令行运行器支持更复杂的处理器调用,这似乎是唯一的方法。

0 投票
2 回答
671 浏览

c# - 从主体生成通用参数的招摇模型

我目前正在开发一个我们自动生成所有控制器的项目。我们的 BaseController 有这样的动作:

在我设置 NSwag 之后,我最终得到了这样的模型:

该接口只是一个标记,API 用户不感兴趣。有没有办法为实际类型(在本例中为 Person)而不是接口生成模型?我只是缺少正确的配置还是需要额外的处理器?

0 投票
0 回答
1699 浏览

c# - Swagger,NswagStudio,c#,Required = Newtonsoft.Json.Required.DisallowNull,怎么处理

鉴于:我在更改方面影响有限的 api,建立在 net core 2.2 之上。使用了标准的 netCore 招摇。某些 DTO 类中的字段标有 [System.ComponentModel.DataAnnotations.Required]但由于某些原因(也可以讨论),某些方法返回此类的对象,该字段中为空值。注释导致

在招摇规范中,然后导致

在 c# 生成的代码中(我正在使用具有相当标准设置的 nswag studio 和 c# 客户端)。然后,当我尝试使用生成的 c# 客户端从 api 获取此类对象的列表时,如果某些此类属性为 null,则它显然会引发 newtonsoft 反序列化异常。那么我们该如何处理呢?我想到了客户端和服务器端的解决方案:

1)在服务器上,我们可以配置不公开有关招摇规范所需的信息。

2)在客户端,我们可以配置将Required块转换为Required = Newtonsoft.Json.Required.Default的行为

3)忘记所有这些并坚持这样api不会返回具有空值的对象,该对象是市场需要的属性。

0 投票
2 回答
1503 浏览

angular - NSwag - 单独的文件生成

我正在使用 NSwag 生成我的 TypeScript 客户端(Angular 格式),但由于循环依赖,我在实现 Bearer 令牌身份验证时遇到了问题。

我的用户服务需要导入 TS 客户端以使用令牌 DTO,我的 TS 客户端需要导入用户服务以注入令牌。

因此,我想知道是否可以将生成的文件拆分为两个(或更多)客户端和模型文件。

另一种选择是在 HTTP 请求上实现一个拦截器,但我觉得这很可恶,因为如果我使用另一个 API 可能会导致问题。