簡體   English   中英

為 ASP.NET Core 控制器自動生成 TypeScript 客戶端代碼

[英]Automatically generate TypeScript client code for ASP.NET Core controllers

我正在尋找一種從 ASP.NET Core Web 應用程序(當前使用 Visual Studio 2017RC 和 webpack)自動生成 TypesScript 客戶端代碼的方法。

是否有任何現有工具可以在 Visual Studio 的構建管道中或使用 webpack 生成 TypeScript 客戶端? 我嘗試使用 swagger 中間件,然后從 swagger URL 生成到客戶端,但我不確定中間 swagger 生成是否適合這項工作。 此外,與構建工具的斷開連接也不理想。

  1. NSwagSwashbuckle/swagger-codegen都很棒。

    1. 打字機是另一個很棒的選擇。

    2. 所以,這是我將如何做出決定:

      • 需要根據 C# 模型生成 TypeScript 模型,請選擇 TypeWriter
      • 需要使用命令行生成完整的客戶端代碼,您可以將其添加為 Swagger Code Gen 的構建或發布步驟

      • 需要使用生成的 Swagger 規范或生成的代碼來添加您的自定義 - 去 NSwag

      • 需要在 Swagger UI 中顯示客戶端內聯代碼片段,使用SwaggerUI-snippets

您可以將Swashbuckle添加到您的 ASP.NET Core web 應用程序,然后生成Swagger/OpenAPI 規范

借助 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 月,大約 50 位 Swagger Codegen 的頂級貢獻者和模板創建者決定分叉 Swagger Codegen 以維護一個名為OpenAPI Generator的社區驅動版本。 請參閱問答以獲取更多信息。

另一種選擇是NSwag,它可以從你的 ASP.NET (Core) 控制器和 TypeScript 客戶端從這個 Swagger 規范(用於 Angular、AngularJS、Fetch 等)生成 Swagger 規范 集成非常簡單,它支持許多高級功能(繼承、命名枚舉、代碼擴展等)。

http://NSwag.org

使用 NSwagStudio UI 開始非常簡單,然后您可以使用 NPM 包自動執行所有操作(即在 cmd 行中運行配置文件)。

在此處輸入圖片說明

我是該項目的作者之一。

您還可以查看autorest.typescript客戶端代碼生成器。 它為所有模型定義提供了良好的接口,准確定義了只讀屬性和枚舉。 它支持一系列 自定義擴展,可用於改善生成的客戶端的用戶體驗。 您可以查看一些生成的示例客戶端

獎勵:生成的打字稿客戶端可以在 node.js 和瀏覽器中使用。

如果您需要生成 DTO 和 API 客戶端,那么您的選擇是

  • 斯瓦格 最流行的工作工具。 但它在一個文件中生成所有內容,這使得維護/調試變得困難。
  • Swagger Codegen或其分支具有更多功能OpenAPI Generator 基於 Java 的選項可生成單獨的文件,但自定義功能有限。
  • 自動休息 用於在 npm 包中打包 API 客戶端的 npm 解決方案。
  • WebApiClientGen 下面作者在此線程中提到的解決方案。
  • 打字機 VS 擴展,您可以在其中制作自己的實現。

如果您只需要 DTO,那么我會考慮

在這篇文章中詳細介紹了這些工具 -將 C# 與 TypeScript 結合的 6 種以上方法

如果您的 TypeScript 客戶端使用 jQuery 或 Angular 2+,則在 SDLC 期間,替代的ASP.NET Web API 客戶端生成器可能比 swagger 工具鏈更方便,開銷更少。

除了 .NET Framework 和 .NET Standard,它還支持 .NET Core。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM