簡體   English   中英

為什么Visual Studio 2017無法為Swagger Petstore生成REST API客戶端?

[英]Why does Visual Studio 2017 fail to generate REST API client for Swagger Petstore?

我正在使用Swagger / OpenAPI文檔/規范在C#中生成 REST API客戶端代碼,但我遇到了幾個問題。

最值得注意的是 - 當嘗試使用Swagger.io Petstore示例作為起點時:

在此輸入圖像描述

在VS 2017中使用VS 2017 Add > REST API client選項,我沒有生成任何代碼 - 而是顯示錯誤:

在此輸入圖像描述

生成客戶端代碼並添加到項目已啟動
使用以下參數為REST API生成客戶端代碼:
REST API名稱:OpenApiClientClient,Base命名空間:OpenApiClient,元數據文件路徑:C:\\ Users \\ Marc \\ AppData \\ Local \\ Temp \\ WebToolsAutoRest \\ OpenApiClientClient \\ 201807162213351660 \\ swagger.json
[Info] AutoRest Core 0.16.0.0
[Info]初始化建模器。
[Info]初始化建模器。
[信息]解析swagger json文件。
[Info]從swagger模型生成客戶端模型。
[致命]生成客戶端模型時出錯:不支持集合格式“multi”(在參數“status”中)。
例外:嘗試為REST API添加客戶端時,代碼生成期間出錯
生成客戶端代碼並添加到項目失敗
添加REST API客戶端失敗

因此,如果Swagger示例應用程序不兼容 - 其他人將如何? (不幸的是,我嘗試了其他幾個,結果相同)。

這有什么不對? 我錯過了什么,我是否需要為VS 2017添加一些額外的工具才能使其工作?

更新

好的,所以我現在嘗試直接使用npm安裝Autorest:

npm install -g autorest

這似乎工作 - 沒有顯示錯誤或任何事情。

但是嘗試運行Autorest - 使用一組命令行參數,甚至只是自己運行 - 會導致錯誤:

AutoRest -CodeGenerator CSharp -Modeler Swagger 
         -Input https://petstore.swagger.io/v2/swagger.json 
         -Namespace Services.UserServiceClient -OutputDirectory d:\projects 
         -AddCrendentials true

要不就

AutoRest <kbd>Enter</kbd>

結果是:

AutoRest代碼生成實用程序[版本:2.0.4280; 節點:v9.9.0]
(C)2018 Microsoft Corporation。
https://aka.ms/autorest
失敗:
錯誤:無法從C:\\ Users \\ Marc.autorest \\ @ microsoft.azure_autorest-core @ 2.0.4280 \\ node_modules \\ @ microsoft.azure \\ autorest-core啟動AutoRest Core
錯誤:無法從C:\\ Users \\ Marc.autorest \\ @ microsoft.azure_autorest-core @ 2.0.4280 \\ node_modules \\ @ microsoft.azure \\ autorest-core啟動AutoRest Core
在main(C:\\ Users \\ Marc \\ AppData \\ Roaming \\ npm \\ node_modules \\ autorest \\ dist \\ app.js:232:19)at at

還有什么想法?

Visual Studio 2017使用的是舊版AutoRest 您所看到的問題是, 這一次它固定在AutoRest訴1.0。 正如該問題的評論中所解釋的那樣

你指的是內置於visual studio的autorest版本嗎? - 那是非常古老的,我們沒有更新(我們已經改變了autorest的全部工作方式)。

您將需要安裝節點並從命令行使用autorest

看起來無法 更新 Visual Studio 2017使用的AutoRest ,因此您需要直接調用AutoRest。

嘗試運行autorest --reset 這適用於具有節點v8.12.0的Windows。 在運行該命令之前,我遇到了同樣的錯誤。

我也有這個問題所以我為它構建了一個名為REST API客戶端代碼生成器的工具 我在團隊中工作,我們使用AutoRest,NSwag和Swagger Codegen等工具來生成我們的REST API客戶端,它總是讓我感到惱火的是,Visual Studio中的“添加新的REST API客戶端...”工具並不總是有效在重新生成客戶端的時候非常麻煩

添加新的REST API客戶端

這會將OpenAPI規范文件(Swagger.json)添加到項目中並設置自定義工具,以便每次對其進行更改時,都會重新生成REST API客戶端代碼。 您還可以右鍵單擊Swagger.json文件並切換代碼生成器

在此輸入圖像描述

我構建的工具主要供個人使用,也可以在我的團隊中使用,但是如果你發現它很有用並認為它缺少你真正需要的東西那么請伸出手

暫無
暫無

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

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