swagger 自动生成ASP.NET核心控制器的TypeScript客户端代码

oxcyiej7  于 2022-11-23  发布在  .NET
关注(0)|答案(7)|浏览(241)

我正在寻找一种从ASP.NET核心Web应用程序(目前使用Visual Studio 2017RC和webpack)自动生成TypesScript客户端代码的方法。
是否有任何现有的工具可以从Visual Studio或webpack的构建管道中生成TypeScript客户端?我尝试使用swagger中间件,然后从swagger URL生成客户端,但我不确定中间的swagger生成工具是否适合这项工作。此外,与构建工具的断开也不理想。

ykejflvf

ykejflvf1#

  1. Typewriter是另一个令人敬畏的选择。
  • 所以,我会这样做:
  • 需要根据C#模型生成TypeScript模型,请选择TypeWriter
  • 需要使用命令行生成完整的客户端代码,您可以将其添加为Swagger代码生成的构建或发布步骤
  • 需要使用生成的Swagger规范或生成的代码来添加您的自定义-请使用NSwag
  • 需要在Swagger UI中显示客户端内联代码片段,请使用SwaggerUI-snippets
aemubtdh

aemubtdh2#

您可以将Swashbuckle添加到ASP.NET核心Web应用程序,然后生成Swagger/OpenAPI spec
有了Swagger/OpenAPI规范,您就可以使用Swagger Codegen不仅生成TypeScript API客户端(Node、Angular、Angular2、Fetch),还可以生成C#、Java、JS、Swift等API客户端以及API文档。
试用Swagger Codegen最简单的方法是导入规范,然后选择要生成的目标API客户端/服务器,从而使用https://editor.swagger.io。(https://editor.swagger.io利用https://generator.swagger.io生成代码,generator.swagger.io由Swagger Codegen提供支持)
Swagger Codegen还可以在C# Nancyfx或ASP.NET核心中生成服务器存根,因此您可以考虑遵循契约优先的方法,使用https://editor.swagger.io编写规范,然后生成API客户端和服务器存根。
更新:2018年5月,大约50位Swagger Codegen的顶级贡献者和模板创建者决定分叉Swagger Codegen,以维护一个名为OpenAPI Generator的社区驱动版本。请参考Q&A了解更多信息。

pw9qyyiw

pw9qyyiw3#

另一个选项是NSwag,它可以从ASP.NET(核心)控制器生成Swagger规范,并从该Swagger规范生成TypeScript客户端(用于Angular、AngularJS、Fetch等)。集成非常简单,它支持许多高级特性(继承、命名枚举、代码扩展等)。
http://NSwag.org
使用NSwagStudio UI,入门非常简单,然后您可以使用NPM包自动执行所有操作(即,在cmd行中运行配置文件)。

我是这个项目的作者之一。

x6h2sr28

x6h2sr284#

如果需要生成DTO和API客户端,则可选择

  • NSwag。最流行的工具。但它在一个文件中生成所有内容,这使得维护/调试变得困难。
  • Swagger Codegen或其分支,具有更多功能OpenAPI Generator.基于Java得选项,可生成单独得文件,但自定义功能有限.
  • AutoRest。一个npm解决方案,用于将API客户端打包到npm包中。
  • WebApiClientGen。作者below在此线程中提到的解决方案。
  • TypeWriter.VS扩展,您可以在其中创建自己实现。

如果您只需要DTO,那么我会考虑

有关这些工具的更多信息,请参阅6+ ways to marry C# with TypeScript

lrpiutwd

lrpiutwd5#

你也可以看看autorest.typescript客户端代码生成器。它为所有的模型定义提供了良好的接口,精确地定义了只读属性和枚举。它支持一堆custom extensions,这对改善生成的客户端的用户体验很有用。你可以看看一些生成的sample clients
好处:生成的typescript客户端可以在node.js和浏览器中使用。

lmyy7pcs

lmyy7pcs6#

如果您的TypeScript客户端使用的是jQuery或Angular 2+,则在SDLC期间,替代的ASP.NET Web API Client Generators可能比swagger工具链更方便、开销更小。
除.NET框架和.NET标准之外,它还支持.NET核心。

bihw5rsg

bihw5rsg7#

还有一个选项是NTypewriter,您可以完全控制生成的代码,它基本上是打字机的克隆,但它使用Scriban语法作为模板。

相关问题