问题标签 [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 回答
264 浏览

nswag - NSwagStudio 使用通用 C# 共享库

我想在端点 REST 服务和客户端之间使用共享 DLL。两者都是用 dotnet core 编写的。

我不希望生成的 nswag c# 包含在共享 DLL 中定义的这些对象,而只是引用它们。这样,我保留了所有验证属性/逻辑,并且可以在服务器和前端进行验证。

我尝试使用“排除的类型名称”,但这没有任何效果。例如。我的通用 dll 命名空间是“MyCommonLibrary”,其中有一个“MyType”类型的对象。我已经在该字段中尝试了“MyCommonLibrary.MyType”以及“MyType”,但都没有生成缺少该类型的 C# 生成文件(即生成了新类型)。

假设我的 REST 调用是

我希望生成的控制器返回 MyCommonLibrary.MyType 而不是“MyGenreatedController.MyType”。

有没有办法做到这一点?

我希望对此进行通配符,因为我自己和其他开发人员将继续添加此内容并希望生成生成的 C# 代码作为构建过程的一部分。

0 投票
1 回答
647 浏览

c# - 基类中的继承和判别器

我有课堂操作:

其中的值Type定义了 的类型Options。但我必须添加discriminatorOperationOptions类型

所以我进入swagger.json:

Discriminator但我的模型中没有属性OperationOptions

有没有办法使用TypeinOperation作为鉴别器OperationOptions

0 投票
1 回答
1552 浏览

c# - 使用 NSwag 和 C# 对控制器名称或标签进行排序

我有一个想要使用 Swagger 的 ASP.Net Core 解决方案。为此,我使用 Nuget 包 NSwag(Assembly NSwag.AspNetCore,Version=11.20.1.0)。在我的应用程序配置中,我有以下内容:

当我运行它时,我正确地看到了所有控制器和相应的方法,但它没有按字母顺序排序。

我已经尝试了以下方法:

  • 将 TagSorter 添加到设置:

    /li>
  • 将 ApisSorter 添加到设置:

    /li>

但是这些更改会导致相同的输出。如何实现排序?

0 投票
0 回答
2321 浏览

swagger - 从 ApiControllers (C#, .Net 4.5) 生成 OpenApi 3

我们正在使用 Swashbuckle 在 Asp .Net 4.5(不是 Asp .Net 核心)上使用 C# 生成一个 swagger 2.0 json。我正在尝试调整我们的解决方案以生成 openApi 3.0:

  • 我了解 .Net 4.5 的 Swashbuckle 目前不支持 openApi 3.0
  • 我尝试使用nSwag,但无论使用函数UseSwaggerUi3,还是使用带有SchemaType = SchemaType.OpenApi3 的GenerateForControllersAsync,生成的openApi 似乎总是2.0。

.Net 4.5 的 nSwag 是否支持它?如果没有,是否有任何其他工具或解决方案无需升级到 .Net 核心?

我尝试使用 nSwag 的代码:

谢谢

0 投票
0 回答
457 浏览

json.net - 覆盖 Newtonsoft.Json.JsonConverter 属性

我们正在使用 nSwag,它会生成一个

属性上的属性,特别是

Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))

无论如何要在运行时覆盖该属性,以使用不同的 JsonConverter。我尝试将其添加到 settings.Converters ,但这似乎不起作用。

0 投票
2 回答
874 浏览

swagger - ASP.NET 样板:将用户输入 DTO 属性值限制为特定的值集

我最近开始使用 ASP.NET Boilerplate 作为我正在处理的项目的起点 - Asp.NET Core Web Api + Angular,但我无法找到一些在我看来很常见的信息使用问题。我会尽力解释我的意思。

我想要做的是有一个 API 端点,它接受一个需要限制为一组特定值的参数 - 所以,我想为此目的使用 Enum。

就参数验证而言,这一切都很好,但我很困惑如何使这与 Nswag 为 fontend 的 swagger 和共享代理生成的服务一起工作。

Enum 参数在文档参数示例中显示为整数,因此仅通过查看 swagger 文档并不清楚可用值的集合是什么,因为 int 值对查看文档的用户没有任何意义。

让我们使用这样的示例,在应用服务方法之一中使用的用户输入:

服务方式:

输入 DTO:

枚举:

在这种情况下,SomethingInput 中 SomethingEnum 的可用值将显示为 0、1、3,而不是“Option1”、“Option2”、“Option2”。

我尝试将 DescribeAllEnumsAsStrings 用于有助于文档的大摇大摆生成选项,但它在 Angular 项目功能中产生了一个问题 - 具体而言,更改租户失败,因为 Nswag 工具使用 DescribeAllEnumsAsStrings 生成枚举的方式 - 它期望值是整数,而不是字符串。

API返回的响应值是数字,这段代码不知道如何正确解析该值,因为枚举不再有整数值:

这里的问题是,在路由或 DTO 对象中使用这些受限参数作为用户输入的最佳实践是什么,以便它们在 swagger doc 中正确显示,并且在重新生成共享代理时不会破坏 angular 项目中的任何内容使用 Nswag 工具?

0 投票
1 回答
633 浏览

c# - 基于属性的路由,与变量名称不同的参数 - aspnetcore

我需要这样做

有没有办法将变量 personName 映射到路由中作为 person_name 提供的内容?

只要路由参数和变量名之间存在匹配(这是有道理的),下面的两个选项就可以工作。

但是你为什么要这个?

  • Swagger 生成的文档必须与以前的 API 相匹配,这是替换 - 它使用来自 route 的变量名称来生成文档。

  • 使用 person_name 作为变量名违反了我们的命名约定

  • 是的,这有点傻——但如果有一个我不知道的简单修复方法,那就太棒了。

0 投票
1 回答
438 浏览

c# - Swagger 认为有效载荷来自“查询”

我有一个带有简单 REST API 的 aspnet 核心项目。

NSwag 用作 Swagger 工具,它基于我在模型和控制器方法上的装饰工作:

上面的代码使 NSwag 生成以下 Swagger 文件:

看起来很棒,除了以下部分指定collectionDetails应该来自查询参数而不是来自正文。

我不确定如何解决这个问题——我非常感谢你在这方面的帮助。

谢谢!

编辑#1(NSwag 初始化):

0 投票
0 回答
882 浏览

c# - NSwag (Swagger) 创建区分大小写的 swagger 文件导致参数名称不一致

我有一个使用 NSwag 作为其 Swagger 工具的 asp.net 核心项目。我遇到的问题如下:

  1. 我有一个描述Collection实体的 Dto 类:

#

  1. 以下 API 用于添加Collections

#

  1. 这是 NSwag 生成的 Swagger 文件:

#

具体来说,我遇到的问题是由于路径声明了两个变量tenantcollection使用小写字母,而 DTO 类使用大写字母TenantCollection.

我希望找到一种方法来装饰 DTO 类属性,该属性将显式声明参数的名称,例如[JsonProperty("collection")](这个特定的不会影响输出 Swagger)。

感谢你的帮助

0 投票
1 回答
1855 浏览

swagger-2.0 - 如何使用 NSwagStudio 生成基本认证码?

我正在使用 NSwagStudio 从 Swagger 2.0 JSON 文件生成客户端类/代码。

以前,它用于生成以下身份验证代码:

现在它没有生成上述Authorization标题。我应该在 JSON 文件中进行哪些更改以确保生成的代码具有如上的身份验证代码?