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

时间:2018-07-16 20:08:20

标签: visual-studio-2017 swagger autorest

我正在使用Swagger / OpenAPI docs / specs在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,基本名称空间:OpenApiClient,元数据文件路径:C:\ Users \ Marc \ AppData \ Local \ Temp \ WebToolsAutoRest \ OpenApiClientClient \ 201807162213351660 \ swagger.json
  [Info] AutoRest Core 0.16.0.0
  [Info]正在初始化建模器。
  [Info]正在初始化建模器。
  [Info]正在解析swagger json文件。
  [Info]从swagger模型生成客户端模型。
  [致命]生成客户端模型时出错:不支持集合格式“多”(在参数“状态”中)。
  异常:尝试为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启动
  错误:无法从C:\ Users \ Marc.autorest \ @ microsoft.azure_autorest-core @ 2.0.4280 \ node_modules \ @ microsoft.azure \ autorest-core启动
  在主要位置(C:\ Users \ Marc \ AppData \ Roaming \ npm \ node_modules \ autorest \ dist \ app.js:232:19)   

还有其他想法吗?

3 个答案:

答案 0 :(得分:5)

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

  

您指的是Visual Studio内置的autorest版本吗? -这太老了,我们没有更新(我们改变了自动休息的工作方式)。

     

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

类似于Visual Studio 2017使用的it's not possible to update AutoRest,因此您需要直接调用AutoRest。

答案 1 :(得分:0)

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

答案 2 :(得分: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

我主要是为个人使用和在团队中使用构建了该工具,但是如果您发现它有用但认为它缺少您真正需要的东西,那么请联系