问题标签 [nswagstudio]
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.
c# - 枚举名称生成 nswag 和 swashbuckle
我有一个 Web API,用于swashbuckle
生成 swagger ui 和 json 以生成代码。问题是,当我使用它生成代码时,nswag studio
它不会生成正确格式的枚举。让我更清楚地解释一下。我在后端这样创建的枚举:
但是我使用nswag studio
代码生成器得到的结果是这样的:
我的启动代码是这样的:
我在这里做错了什么?我正在使用.net core 3.1
.
angular - Ionic Angular HttpClient 注入不起作用
我已经使用 NSwagStudio 自动生成了一个 WebAPI 服务模块,以将我的 Ionic/Angular 应用程序和我的 web 服务连接在一起。此服务 (WebApiConnector.Client) 配置为注入:
当我在浏览器上运行应用程序或在 android 设备上调试它时,一切都像一个魅力,但是当我在生产环境中构建它时:
注入 WebAPI 服务的 HttpClient 似乎未定义,因为在执行第一次调用时,应用程序陷入此异常:
未捕获(承诺):TypeError:无法读取未定义的属性“请求”
调用在 ngAfterViewInit() 钩子内部执行。
我还尝试将 HttpClient 注入到注入“WebApiConnector.Client”的页面中,以手动执行对服务器的请求,但效果很好。
这是服务模块配置
这是引发异常的代码片段:
问题出在哪里?
typescript - NSwag:关于如何在 NSwag 工作室中使用类扩展的清晰步骤和干净示例
没有关于如何使用 NSwag 扩展自动生成的 TS 文件的明确文档。我的意思是带有保护器访问修饰符的扩展方法
这里与 NSwag 的所有者讨论:
https://github.com/RicoSuter/NSwag/issues/1012
但所采取的步骤之间存在一些不确定性。特别是在为控制器名称添加静态后缀和/或前缀的情况下。
有人可以清楚地解释我们如何扩展自动生成的方法吗?
asp.net-core - NSwag 和多个 api 版本
考虑以下控制器:
以及课堂上的 Swagger 文档Startup
:
现在,在使用NSwag测试 API 浏览器后,它会忽略版本并显示 v1 和 v2 文档中的所有 API。
如何告诉 NSwag 将它们分开?
c# - 使用 Swashbuckle 5.x 在通用 T 参数引用属性上指定 nullable = true
我最近使用带有 newtonsoft json nuget 的 Swashbuckle 5 将我的 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,该 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 中的 Required 属性,并将 JsonProperty 必需属性设置为“默认”(非必需)而不是“DisallowNull”。
但是,我标记有效负载属性的任何内容都不会导致 nullable: true 出现在我的模式 json 定义中。
我想要的是这样的:
我得到的是:
还可以在引用的 $ref 对象本身的定义上设置“nullable”=true。我也找不到这样做的方法。
我尝试了以下补救措施,但没有成功。
使用 JsonProperty 以不同方式标记 dto 类中的属性:
/li>试图告诉 Swashbuckle / Newtonsoft 使用我在这个 github 问题中描述的自定义 Json Resolver - 似乎不服从
我创建了自己的自定义属性和过滤器以尝试将属性设置为可为空
/li>
我在这方面取得了小小的成功,因为添加了 prop.Nullable = true; [System.ComponentModel.DataAnnotations.Required]
导致从 c# api 中删除该属性。然而,它[Newtonsoft.Json.JsonProperty("payload", Required = Newtonsoft.Json.Required.DisallowNull...]
仍然存在,所以它并没有太大帮助。我添加prop.Required = new HashSet<string>() { "false" };
了一个额外的尝试,但它似乎没有做任何事情。
我可以再次降级到 .net core 2.2 / swashbuckle 4,但是 2.2 已经失去了长期支持,如果可能的话,我想保持在 3.1。我也可以每次都在我生成的 API 客户端上进行查找和替换,但我不想每次重新生成 api 时都手动记住要这样做,这在开发周期中每天可能会发生几次。
我有一个 hacky 解决方法 - 这是我拦截 json 响应并"nullable" = true
在我的服务器上添加它需要的地方,方法是在响应正文 json 字符串上使用正则表达式匹配,然后再将其提供给客户端。虽然它真的很hacky,如果它存在,我想要一种本地方式来做到这一点。
任何和所有的帮助表示赞赏!
asp.net-core - 将令牌传递给 .Netcore 中的 nswag apiclient
如您所见,我已经生成了我的APIclient
代码:Nswagstudio
所以我已经使用这些配置将此代码添加到我的 MVC 核心端点
我的 apli 使用 JWT 作为安全模式。但我的问题是如何将我的令牌传递到由 nswag studio 生成的上述代码的 httpclient 中。
c# - NSwagStudio 和 Swagger 2.0 x-sub_types
我认为这是一个 NSwag 或 NSwagStudio 问题,但我没有足够的经验来知道我是否使用错误,或者 NSwag 中是否存在错误或我正在使用的 Swagger 2.0 文档有问题。
我正在使用 NSwagStudio 13.6.1.0 为 Salesforce OCAPI Shop API 生成 C# 客户端。表示order_search_request
属性的类型query
作为没有属性的空类出现。但是 Swagger 文档声明了 的几个子类型query
,其中一些确实具有属性:
起初我假设这些x-sub_types
应该作为 的子类生成Query
,但事实并非如此。但是根据请求正文应该包含的内容的非 Swagger 文档,似乎Query
应该具有这些子类型之一,而不是其中之一:
由于 NSwag 生成部分类,我也许可以为Query
自己添加必要的字段。但这真的是最好的解决方案吗?我想知道是否有可能让 NSwag 首先做正确的事情,或者 Swagger 文档是否错误地描述了 API。另一个明显的可能性,特别是考虑到x-
前缀,是x-sub_types
Salesforce 发明的一些非标准的东西。
angular - NSwagStudio,在使用 NSwag 生成的客户端方法名称中包含 Http 请求方法名称
我使用 NSwagStudio 为 a.Net Core 3.1 API 生成 Angular 客户端。API 包括可用于多种 Http 请求类型(例如 POST、GET)的端点。客户端为每个请求生成一个具有相同基本名称和数字的方法。
该模式包含一个/contract
支持GET
和POST
请求的端点,以及一个支持/contract/{ID}
和请求的端点。GET
POST
DELETE
生成的客户端具有如下方法:
ContractAsync
对于没有 ID 的 GET 请求Contract2Async
对于没有 ID 的 POST 请求Contract3Async
对于带有 ID 的 GET 请求Contract4Async
对于带有 ID 的 POST 请求Contract5Async
对于带有 ID 的 DELETE 请求
我希望它生成名为:
GetContractAsync
对于没有 ID 的 GET 请求PostContractAsync
对于没有 ID 的 POST 请求
ETC
问题的答案是“实现并提供自己的 IOperationNameGenerator”参见https://stackoverflow.com/a/49935417/4180382
我不知道如何实现和提供这个 IOperationNameGenerator。
“通过反射的 Web Api”选项卡包含几个自定义实现,但未提及“IOOperationNameGenerator”
如何实现 IOperationNameGenerator?
c# - NSwagStudio 如何保存代码生成设置
通过NSwagStudio为 Web api 生成 C# 客户端时,可以选择配置设置以实现所需的输出。但是,退出应用程序并再次运行后,您必须再次从头开始设置设置。
所以我想知道是否有办法保存代码生成设置并在应用程序重启后使用它们?