为什么Visual Studio 2017无法为Swagger Petstore生成REST API客户端?

问题描述 投票:4回答:3

我正在使用Swagger / OpenAPI文档/规范在C#中生成REST API客户端代码,但我遇到了几个问题。

最值得注意的是 - 当尝试使用Swagger.io Petstore示例作为起点时:

enter image description here

在VS 2017中使用VS 2017 Add > REST API client选项,我没有得到任何代码 - 而是显示错误:

enter image description here

生成客户端代码并添加到项目已启动 使用以下参数为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 swagger autorest
3个回答
5
投票

Visual Studio 2017使用的是非常旧版本的AutoRest。您看到的问题是this one,它已在AutoRest v.1.0中修复。正如那个问题中的explained in the comments

你指的是内置于visual studio的autorest版本吗? - 那是非常古老的,我们没有更新(我们已经改变了autorest的全部工作方式)。

你将需要install node and use autorest from the command line

看起来像Visual Studio 2017使用的it's not possible to update AutoRest,因此您需要直接调用AutoRest。


0
投票

尝试运行autorest --reset。这适用于具有节点v8.12.0的Windows。在运行该命令之前,我遇到了同样的错误。


0
投票

我也有这个问题所以我为它建立了一个名为REST API Client Code Generator的工具。我在团队中工作,我们使用AutoRest,NSwag和Swagger Codegen等工具来生成我们的REST API客户端,它总是让我感到恼火的是,Visual Studio中的“添加新的REST API客户端...”工具并不总是有效,在重新生成客户端的时候非常麻烦

Add New REST API Client

这会将OpenAPI规范文件(Swagger.json)添加到项目中并设置自定义工具,以便每次对其进行更改时,都会重新生成REST API客户端代码。您还可以右键单击Swagger.json文件并切换代码生成器

enter image description here

我构建的工具主要供个人使用,也可以在我的团队中使用,但是如果你发现它很有用并认为它缺少你真正需要的东西那么请伸出手

© www.soinside.com 2019 - 2024. All rights reserved.