问题标签 [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.
angular - 是否可以使用 nswag (TypeScript) 自动生成自定义 HTTP 标头
我使用nswag
npm 包生成 http 服务、接口等。
典型服务代理的打字稿代码如下所示:
关于HTTP Headers
详细的位:
我想知道是否有办法告诉该nswag
工具自动添加额外的标头(Authorization
在我的情况下为 JWT Bearer)?
当然,有一种 hacky 解决方法可以使用文本编辑器将标题位替换为以下代码:
但我怀疑可能有一种方法可以包含额外的标题。
也许有人已经解决了这个问题?
swagger - 使用 NSwag 'AspNetCoreToSwaggerGenerator' 的最佳实践
我一直在使用NSwag为我的 WebAPI 生成一个 Angular TS 客户端,我喜欢它。
我终于从 NSwagStudio 转向使用 MSBuild 目标来自动生成我的 json 规范。
我看到有一种生成规范的新方法称为AspNetCoreToSwaggerGenerator
,它使用ASP.NET Core API Explorer服务。
文档指定:
此生成器使用ASP.NET Core API Explorer服务生成规范,并将最终取代基于反射的生成器WebApiToSwaggerGenerator。建议将此生成器用于新项目并开始迁移现有项目。
所以我觉得很好,我会用它。然而,我突然收到一些关于缺少路径的错误,原来是来自我的 startup.cs 文件。我觉得这很奇怪,直到我意识到它实际上是在启动我的 Startup 类的一个实例并运行代码——如果它使用 API Explorer 是有道理的。
然而,这让我觉得不仅可能非常危险(如果我在 Startup 中进行了一些奇怪的编码),而且如果它正在运行大量启动代码,也可能会变慢。
我改用这样的旧版本WebApiToSwaggerGenerator
:
这会生成一个rrapi.json
文件,然后我可以在我的 Angular 构建中运行该文件以实际创建客户端。它似乎非常快并且效果很好。
所以我想知道最佳实践是什么,以及新的AspNetCoreToSwaggerGenerator
. 具体来说 :
- 如何防止从我的 Startup.cs 文件中运行不必要的代码
- 实际的好处是什么?这是通过 API Explorer 服务启用更高级的元数据 - 还是 Swagger 3 的一些未来证明?
- 在典型项目中使用这两种方法的基准是什么。
我基本上想要每次构建 WebAPI 客户端时生成一个静态 .json 文件。我现在看不出有任何理由不使用旧发电机。
更新:这就是我最终使用的(aspnetcore2swagger)。我不记得这里发生的所有事情的确切细节,但这一直运作良好。它创建一个中间 rr.api.json 文件(我在 RR.API 项目中有我所有的 API 东西)。
我SpaRoot_APIRoot
定义为:
swagger - nswag 生成破坏 URL 的代理
软件的总体理念nswag
是惊人的。
伙计们已经完全毁了它。
我现在真的考虑放弃它,原因如下:
过于复杂
有问题的
记录极差
不受欢迎
关于我的版本 - "nswag@11.17.19"
。
我的服务应该传递一个复合结构(例如嵌套数组) - 但在最近的版本中,它通过 URL 传递所有内容,这就是我的意思:
此外,它的最新版本不生成输入类 - 例如我的 API 控制器有动作ImportEntries(ImportEntriesInput input)
nswag
不再生成输入类(我的意思是ImportEntriesInput
)——而是只列出其所有成员:
例如比较
和
也许开发它的人觉得没问题,但我想说这完全使整个方法过于复杂而且太糟糕了。
我真的找不到涵盖这部分的文档。
任何人都知道如何解决这个问题?
此外,这里是它创建在 URL 中传递的内容的地方:
相当骇人听闻,不是吗?
swaggerToTypeScriptClient
来自配置的位:
nswag - NSwag 客户端/服务器使用共享库和相同类型
我的客户端和服务器之间有一个共享库。
它不包含太多,保持它尽可能小。但是,我所有的枚举都存储在这个共享库中。
我这样做是因为我的一些共享函数需要知道/使用枚举。
当我使用 NSwagStudio 生成我的 c# 时,我收到一个参考错误,说我的枚举被定义了两次。一次在共享库中,一次在生成的代码中。
我可以告诉 NSwag 将我的共享库用于类型而不是自动生成它们吗?
c# - 是否可以将 Swagger 与 AspNetCore Odata 一起使用?
昨天我搜索了如何在 Core Odata 上使用 swagger 的解决方案,我尝试了几个库但没有成功,它似乎目前还没有完全支持。
c# - NSwag .NET Core API 版本控制配置
我想准备我的.NET Core Web API项目,以便可以根据 REST 服务标准管理和记录 API 的多个版本。
我正在使用.NET Core 2.1和NSwag (v11.18.2)。我还安装了Microsoft.AspNetCore.Mvc.Versioning NuGet 包。
我已经用谷歌搜索了一些配置示例,但我发现唯一有用的链接是这个。
我现在可以获取两个 API 版本的 Swagger 页面,但存在一些问题:
- 请注意,最后的
config
设置(Title
、Description
等)都不会对 2 条路线中的任何一条生效。它仅在我将它们添加到每个单独的配置时才有效。所以我也想知道是否可以避免这种情况,因为 API 的一般配置可以是版本独立的(标题、描述等......)。 - 由于上面链接中讨论的 NSwag 和 Microsoft API 版本控制包的问题是在 2-3 个月前打开的(以及 NSwag 版本),我想知道它现在是否真正得到修复,在这种情况下,这是要设置的正确配置。
- 虽然版本在控制器的配置中是明确的,但它仍然是控制器方法的强制输入参数,当然我不希望这样!见图片:
因此,按照该示例,我的实际配置如下所示:
这些是我的实际控制器:
typescript - 如何设置 nswag swagger2tsclient 获取选项,如凭据:“包括”?
这是我用来生成 API 调用的命令行:
但是,这不会生成带有 fetch 的 API 客户端,包括凭据选项 II 必须手动设置它。
google了几天,还是没找到怎么设置。
swagger - 如何在 Swagger 和 NSwagStudio 中使用 OAuth
我正在尝试为已向我提供 swagger.json 文件的 API 生成 C# 客户端,位于此链接;
使用 NSwagStudo 应用程序,我可以导入配置文件并生成一个名为 Client.cs 的文件,该文件实现了一个名为 Client 的类,并且它具有与 API 匹配的方法。
但是,当我调用任何方法时,我会收到“未经授权”异常,并且找不到任何方法向客户端或与其他身份验证方法类似的任何人提供 OAuth 密钥和秘密。
检查 swagger 配置文件确实表明 OAuth 被指示为身份验证方法,如下所示;
我的测试代码如下;
该类Client
没有任何明显的方法或属性来设置安全值或任何构造函数参数。
有没有人有一个如何实现这一目标的例子?
.net-core - NSwagStudio 生成的客户端无效
我正在使用 NSwagStudio 为我的 WebAPI (.NET Core 2.0) 生成客户端。不幸的是,生成的客户端是无用的。
例如:
变成:
公共 System.Threading.Tasks.Task V1DocumentsetsGetAsync(...)
这是因为 - swagger.json (我用于生成的)也是无效的(我认为):
$ref 似乎在这里无效... PagingInfo 和 ResponseContainer 类型来自 Nuget 包。
生成的方法名称 - V1DocumentsetsGetAsync - 似乎也很奇怪。来自 swagger.json 的 operationId: "operationId": "V1DocumentsetsGet" - 这也很奇怪。为什么版本号在生成的id中?
招摇设置:
我应该改变什么?
swagger - NSwag 过滤器命名空间
我正在使用 NSwag 在 ASP.Net Core 2.1 项目中生成 swagger api 文档,该项目混合了 Web-API 控制器、MVC 控制器和 Razor Pages。NSwag 抱怨了很多类似以下的内容,而它们在 ASP.NET 中是有效的。问题:如何在 Swagger/NSwag 中归档以仅包含特定的命名空间(MyProject.Api)或路径(/api/)?
路径 '/api/XXX/Create' 上的方法 'Post' 已注册多次