7

我正在尝试使用 Swagger / OpenAPI docs/specs 在 C# 中生成REST API 客户端代码,但我遇到了几个问题。

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

在此处输入图像描述

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

在此处输入图像描述

生成客户端代码并添加到已启动的项目
使用以下参数为 REST API 生成客户端代码:
REST API 名称:OpenApiClientClient,基本命名空间:OpenApiClient,元数据文件路径:C:\Users\Marc\AppData\Local\Temp\WebToolsAutoRest\OpenApiClientClient\ 201807162213351660\swagger.json
[信息]AutoRest Core 0.16.0.0
[信息]初始化建模器。
[信息]初始化建模器。
[信息]解析 swagger json 文件。
[信息]从 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
在 main (C:\Users\Marc\AppData\Roaming \npm\node_modules\autorest \dist\app.js:232:19) 在

还有什么想法吗?

4

3 回答 3

6

Visual Studio 2017 使用的是非常旧的AutoRest版本。您看到的问题是AutoRest v. 1.0 中修复的问题。正如该问题的评论中所解释的:

您指的是 Visual Studio 内置的 autorest 版本吗?-- 那太老了,我们没有更新它(我们已经改变了 autorest 的整个工作方式)。

您将需要从命令行安装节点并使用 autorest

看起来无法 更新Visual Studio 2017 使用的 AutoRest,因此您需要直接调用 AutoRest。

于 2018-07-17T07:17:18.047 回答
2

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

添加新的 REST API 客户端

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

在此处输入图像描述

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

于 2019-05-31T16:15:27.637 回答
0

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

于 2019-04-15T18:36:49.173 回答