问题标签 [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.
nswag - NSwagStudio 使用通用 C# 共享库
我想在端点 REST 服务和客户端之间使用共享 DLL。两者都是用 dotnet core 编写的。
我不希望生成的 nswag c# 包含在共享 DLL 中定义的这些对象,而只是引用它们。这样,我保留了所有验证属性/逻辑,并且可以在服务器和前端进行验证。
我尝试使用“排除的类型名称”,但这没有任何效果。例如。我的通用 dll 命名空间是“MyCommonLibrary”,其中有一个“MyType”类型的对象。我已经在该字段中尝试了“MyCommonLibrary.MyType”以及“MyType”,但都没有生成缺少该类型的 C# 生成文件(即生成了新类型)。
假设我的 REST 调用是
我希望生成的控制器返回 MyCommonLibrary.MyType 而不是“MyGenreatedController.MyType”。
有没有办法做到这一点?
我希望对此进行通配符,因为我自己和其他开发人员将继续添加此内容并希望生成生成的 C# 代码作为构建过程的一部分。
c# - 基类中的继承和判别器
我有课堂操作:
其中的值Type
定义了 的类型Options
。但我必须添加discriminator
到OperationOptions
类型
所以我进入swagger.json:
Discriminator
但我的模型中没有属性OperationOptions
。
有没有办法使用Type
inOperation
作为鉴别器OperationOptions
?
c# - 使用 NSwag 和 C# 对控制器名称或标签进行排序
我有一个想要使用 Swagger 的 ASP.Net Core 解决方案。为此,我使用 Nuget 包 NSwag(Assembly NSwag.AspNetCore,Version=11.20.1.0)。在我的应用程序配置中,我有以下内容:
当我运行它时,我正确地看到了所有控制器和相应的方法,但它没有按字母顺序排序。
我已经尝试了以下方法:
将 TagSorter 添加到设置:
/li>将 ApisSorter 添加到设置:
/li>
但是这些更改会导致相同的输出。如何实现排序?
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 的代码:
谢谢
json.net - 覆盖 Newtonsoft.Json.JsonConverter 属性
我们正在使用 nSwag,它会生成一个
属性上的属性,特别是
Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))
无论如何要在运行时覆盖该属性,以使用不同的 JsonConverter。我尝试将其添加到 settings.Converters ,但这似乎不起作用。
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 工具?
c# - 基于属性的路由,与变量名称不同的参数 - aspnetcore
我需要这样做
有没有办法将变量 personName 映射到路由中作为 person_name 提供的内容?
只要路由参数和变量名之间存在匹配(这是有道理的),下面的两个选项就可以工作。
但是你为什么要这个?
Swagger 生成的文档必须与以前的 API 相匹配,这是替换 - 它使用来自 route 的变量名称来生成文档。
使用 person_name 作为变量名违反了我们的命名约定
是的,这有点傻——但如果有一个我不知道的简单修复方法,那就太棒了。
c# - Swagger 认为有效载荷来自“查询”
我有一个带有简单 REST API 的 aspnet 核心项目。
NSwag 用作 Swagger 工具,它基于我在模型和控制器方法上的装饰工作:
上面的代码使 NSwag 生成以下 Swagger 文件:
看起来很棒,除了以下部分指定collectionDetails
应该来自查询参数而不是来自正文。
我不确定如何解决这个问题——我非常感谢你在这方面的帮助。
谢谢!
编辑#1(NSwag 初始化):
c# - NSwag (Swagger) 创建区分大小写的 swagger 文件导致参数名称不一致
我有一个使用 NSwag 作为其 Swagger 工具的 asp.net 核心项目。我遇到的问题如下:
- 我有一个描述Collection实体的 Dto 类:
#
- 以下 API 用于添加Collections:
#
- 这是 NSwag 生成的 Swagger 文件:
#
具体来说,我遇到的问题是由于路径声明了两个变量tenant
并collection
使用小写字母,而 DTO 类使用大写字母Tenant
和Collection
.
我希望找到一种方法来装饰 DTO 类属性,该属性将显式声明参数的名称,例如[JsonProperty("collection")]
(这个特定的不会影响输出 Swagger)。
感谢你的帮助
swagger-2.0 - 如何使用 NSwagStudio 生成基本认证码?
我正在使用 NSwagStudio 从 Swagger 2.0 JSON 文件生成客户端类/代码。
以前,它用于生成以下身份验证代码:
现在它没有生成上述Authorization
标题。我应该在 JSON 文件中进行哪些更改以确保生成的代码具有如上的身份验证代码?