【问题标题】:Automatically generate TypeScript client code for ASP.NET Core controllers为 ASP.NET Core 控制器自动生成 TypeScript 客户端代码
【发布时间】:2017-05-07 15:10:51
【问题描述】:

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

是否有任何现有的工具可以在 Visual Studio 的构建管道中或使用 webpack 生成 TypeScript 客户端?我尝试使用 swagger 中间件,然后从 swagger URL 生成到客户端,但我不确定中间 swagger 生成是否是适合该工作的工具。此外,与构建工具的断开连接也不理想。

【问题讨论】:

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


【解决方案1】:

您可以将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

【讨论】:

  • 您是否偶然知道 Swagger Codegen 是否支持 TypeScript/JS 客户端的继承?
【解决方案2】:

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

http://NSwag.org

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

我是该项目的作者之一。

【讨论】:

  • 嗨,Rico,希望我们可以很快分离文件,:),也有 jsonstringify 被覆盖的问题,但是我们喜欢这个工具!
【解决方案3】:
  1. NSwagSwashbuckle/swagger-codegen 都很棒。

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

    2. 那么,我将如何做出决定:

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

      • 需要使用生成的 Swagger 规范或生成的代码来添加您的自定义 - 选择 NSwag

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

【讨论】:

    【解决方案4】:

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

    奖励:生成的 typescript 客户端可以在 node.js 和浏览器中使用。

    【讨论】:

      【解决方案5】:

      如果您的 TypeScript 客户端使用 jQuery 或 Angular 2+,那么在 SDLC 期间,替代 ASP.NET Web API Client Generators 可能比 Swagger 工具链更方便,开销更少。

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

      【讨论】:

        【解决方案6】:

        如果您需要生成 DTO 和 API 客户端,那么您的选择是

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

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

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

        【讨论】:

          猜你喜欢
          • 2013-08-15
          • 1970-01-01
          • 1970-01-01
          • 2015-09-05
          • 2023-03-19
          • 1970-01-01
          • 2010-11-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多