自动为ASP.NET Core控制器生成TypeScript客户端代码

时间:2016-12-22 03:59:33

标签: asp.net-web-api typescript asp.net-core swagger

我正在寻找一种从ASP.NET核心Web应用程序(目前使用Visual Studio 2017RC和webpack)自动生成TypesScript客户端代码的方法。

是否有任何现有工具可以在visual studio或webpack的构建管道中生成TypeScript客户端?我试图使用swagger中间件,然后从swagger URL生成到客户端,但我不确定中间的swagger生成是否适合这项工作。此外,与构建工具的脱节也不理想。

6 个答案:

答案 0 :(得分:16)

  1. NSwagSwashbuckle/swagger-codegen都很棒。

    1. Typewriter是另一个很棒的选择。

    2. 所以,我将采取以下决定:

      • 需要根据C#模型生成TypeScript模型,转到TypeWriter
      • 需要使用命令行生成完整的客户端代码,您可以将其作为构建或发布步骤添加到Swagger Code Gen

      • 需要使用生成的Swagger规范或生成代码来添加自定义项 - 转到NSwag

      • 需要在Swagger UI中显示客户端内嵌代码段,使用SwaggerUI-snippets

答案 1 :(得分:11)

您可以将Swashbuckle添加到ASP.NET Core webapp,然后生成Swagger/OpenAPI spec

使用Swagger / OpenAPI规范,您可以使用Swagger Codegen不仅生成TypeScript API客户端(Node,Angular,Angular2,Fetch),还可以生成C#,Java,JS,Swift等API客户端以及API文档。

尝试Swagger Codegen的最简单方法是通过导入规范来使用https://editor.swagger.io,然后选择要生成的目标API客户端/服务器。 (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月,Swagger Codegen的约50名顶级贡献者和模板创建者决定将Swagger Codegen分叉,以维护一个名为OpenAPI Generator的社区驱动版本。有关详细信息,请参阅Q&A

答案 2 :(得分:7)

另一个选项是 NSwag,它可以从这个Swagger规范(对于Angular,AngularJS,Fetch等)从ASP.NET(Core)控制器和TypeScript客户端生成Swagger规范。集成非常简单,它支持许多高级功能(继承,命名枚举,代码扩展等)。

http://NSwag.org

使用NSwagStudio UI非常简单,然后您可以使用NPM包自动执行所有操作(即在cmd行中运行配置文件)。

enter image description here

我是该项目的作者之一。

答案 3 :(得分:2)

您还可以查看autorest.typescript客户端代码生成器。它为所有模型定义提供了良好的接口,准确定义了只读属性和枚举。它支持一堆custom extensions,可用于改善生成的客户端的用户体验。您可以查看一些生成的sample clients

奖励:生成的typescript客户端在node.js和浏览器中工作。

答案 4 :(得分:1)

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

  • NSwag。最受欢迎的工作工具。但它会在一个文件中生成所有内容,因此很难进行维护/调试。
  • Swagger Codegen或其具有更多功能的分支OpenAPI Generator。一种基于Java的选项,可生成单独的文件,但定制范围有限。
  • AutoRest。用于将API客户端打包为npm软件包的npm解决方案。
  • WebApiClientGen。作者below在此主题中提到的解决方案。
  • TypeWriter。 VS扩展,您可以在其中设计自己的实现。

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

本文中有关这些工具的更多信息-6+ ways to marry C# with TypeScript

答案 5 :(得分:0)

如果您的TypeScript客户端使用jQuery或Angular 2+,与SDLC期间的灵活工具链相比,替代ASP.NET Web API Client Generators可能更方便,开销也较小。

除了.NET Framework和.NET Standard之外,它还支持.NET Core。