我在服务器上创建了一个枚举,其中手动设置了整数值,而不是从 0 开始默认增量
public enum UserType
{
Anonymous = 0,
Customer = 10,
Technician = 21,
Manager = 25,
Primary = 30
}
Run Code Online (Sandbox Code Playgroud)
我的服务器正在使用 AspNetCore.App 2.2.0 运行。它在 Startup.cs 中使用 swashbuckle aspnetcore 4.0.1 进行配置,以在每次服务器启动时生成一个 swagger json 文件来描述 api。
然后,我使用 NSwag Studio for windows v 13.2.3.0 生成带有该 swagger JSON 文件的 C Sharp api 客户端,以在 Xamarin 应用程序中使用。生成的 c Sharp api 客户端中生成的枚举如下所示 - 底层整数值与原始枚举不匹配。
[System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.1.5.0 (Newtonsoft.Json v11.0.0.0)")]
public enum UserType
{
[System.Runtime.Serialization.EnumMember(Value = @"Anonymous")]
Anonymous = 0,
[System.Runtime.Serialization.EnumMember(Value = @"Customer")]
Customer = 1, …
Run Code Online (Sandbox Code Playgroud) 我最近使用 Swashbuckle 5 和 newtonsoft json nuget 将我的 API 升级到 .net core 3.1 服务器,它生成一个 openapi 3 模式。然后我使用 NSwag 生成一个 C# API。以前我有一个带有 swashbuckle 4 的 .net core 2.2 服务器,生成了一个 swagger 2.0 api 模式。
我有一个适用于所有响应的通用响应类,包含一些关于响应的元数据,如状态代码和消息,以及包含响应内容的通用类型 T 的 Payload 属性。
当响应是错误代码时,我将有效负载属性设置为 null。我正在努力寻找一种定义我的 api 的方法,以便 swashbuckle 和 NSwag 结合产生一个 C# api,它将允许有效载荷属性在反序列化时为空。(swagger 2.0 / swashbuckle 4 没有问题)。
尽我所能,Payload 属性总是获取注释[Newtonsoft.Json.JsonProperty("payload", Required = Newtonsoft.Json.Required.DisallowNull...]
和[System.ComponentModel.DataAnnotations.Required]
注释。
据我了解,开放 API 3 现在允许 "$ref" 属性在架构定义中具有 "nullable": true 属性。如果我在创建后手动将其添加到我的定义中,NSwag 会正确删除 CSharp api 中的必需属性,并将 JsonProperty 必需属性设置为“默认”(非必需)而不是“DisallowNull”。
但是,我标记有效负载属性的任何内容都不会导致 nullable: true 出现在我的架构 …
语境
我已将连接的服务添加到我的 .NET 6 项目中,并使用 NSwagCSharp 代码生成器来生成客户端。(在我之前的项目中我使用了NSwagStudio)
我发现在 .csproj 文件中可以添加选项:
<OpenApiReference Include="OpenAPIs\swagger.json" CodeGenerator="NSwagCSharp" ClassName="MyClient">
<SourceUri>https://localhost:xxxx/swagger/v1/swagger.json</SourceUri>
<Options>/UseBaseUrl:false /GenerateClientInterfaces:true /InjectHttpClient:false, /DisposeHttpClient:false,
</Options>
</OpenApiReference>
Run Code Online (Sandbox Code Playgroud)
这些选项似乎与 NSwagStudio 保存到其 .nswag 文件中的选项非常相同。我不确定这只是一个猜测,其中一些到目前为止似乎有效。(这有记录在某处吗?)
然而 NSwagStudio 也保存默认值(我不知道是什么),所以在典型的 .nswag 文件中,json 中有大约 80 个设置:
"codeGenerators": {
"openApiToCSharpClient": {
...
"generateClientInterfaces": true,
"clientBaseInterface": null,
... up to more than 80 lines...
Run Code Online (Sandbox Code Playgroud)
问题
<Options>
这将导致.csproj 文件中的 element中出现很长的一行。(似乎不允许换行(?))。有没有办法使用外部选项文件(例如 json .nswag 文件)来配置代码生成选项?
我有一个 .NET 5.0 ASP.NET Core 项目,我正在使用它Nswag
来生成 API 客户端。假设我有以下 API 模型:
public class GetFooListResponseModel
{
public string Bar { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我想要的是两件事。让我们从基本的开始。
Foo
不是GetFooListResponseModel
.非常感谢!
NSwagStudio 为我们提供了大量的设置来获取 C# 中自定义自动生成的 swagger 客户端。
但是,当我们使用 VisualStudio 2019 解决方案资源管理器并打开项目上的“连接服务”时,我们可以从 swagger json 文件添加 OpenAPI 服务,但我没有看到任何配置代码生成器的方法。这样你就有了一个默认的。
例如,是否可以在 Visualstudio csproj 项目文件中配置 NSwagCSharp 代码生成器?
我正在尝试生成一个招摇规范,NSwag.MSbuild
但每当我这样做时,它都会向我抛出以下消息:
路径“/api/Account”上的方法“get”被注册多次
现在的问题是我的方法是无路由的,如下所示控制器的一些示例
[HttpPost]
[HttpGet]
[AllowAnonymous]
public IActionResult ExternalRegister(string provider, string returnUrl = null)
[HttpGet]
public IActionResult AddLogin(string provider, string returnUrl)
[HttpGet]
[AllowAnonymous]
public ActionResult SignUpConfig()
Run Code Online (Sandbox Code Playgroud)
我明白它为什么这样做,但我不明白的是,在 NSwag Studio 中做同样的事情是有效的,我使用的命令是否有$(NSwagExe_Core22) webapi2swagger
一个选项,以便它像 NSwag Studio 一样成功生成?
我使用 NSwagStudio 为 .Net Core 3.1 API 生成 Angular 客户端。该API 包括可与多种Http 请求类型(例如POST、GET)一起使用的端点。客户端为每个请求生成一个具有相同基本名称和数字的方法。
该架构包含一个/contract
支持GET
和POST
requests 的端点,以及一个/contract/{ID}
支持GET
和requestsPOST
的端点DELETE
。
生成的客户端具有以下方法:
ContractAsync
对于没有 ID 的 GET 请求Contract2Async
对于没有 ID 的 POST 请求Contract3Async
对于带有 ID 的 GET 请求Contract4Async
对于带有 ID 的 POST 请求Contract5Async
对于带有 ID 的 DELETE 请求我希望它生成名为:
GetContractAsync
对于没有 ID 的 GET 请求PostContractAsync
对于没有 ID 的 POST 请求ETC
问题的答案是“实现并提供自己的 IOperationNameGenerator”请参阅/sf/answers/3495479221/
我不知道如何实现和提供这个 IOperationNameGenerator。
“通过反射的 Web …
通过NSwagStudio为 web api 生成 C# 客户端时,有一个选项可以配置设置以实现所需的输出。但是,退出应用程序并再次运行后,您必须再次从头开始设置设置。
所以我想知道是否有办法保存代码生成设置并在应用程序重启后使用它们?
nswagstudio ×8
c# ×6
asp.net-core ×4
nswag ×4
openapi ×3
swagger ×3
.net ×1
angular ×1
swashbuckle ×1