问题标签 [autorest]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
5969 浏览

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

我正在尝试使用 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:

这似乎工作 - 没有显示错误或任何东西。

但是尝试运行 Autorest - 使用一组命令行参数,甚至只是单独运行 - 会导致错误:

要不就

结果是:

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) 在

还有什么想法吗?

0 投票
1 回答
791 浏览

c# - 如何防止 autorest 在构造函数中接受 null / nullable 参数?

我正在使用 autorest 从swagger.json文件中生成 C# 客户端。

但是,我注意到自动生成的类具有接受可为空值的构造函数。

这是来自的原始 C# 类swagger.json

这是招摇中的类的定义:

这是使用 autorest 生成的相同的自动:

这不好,因为我不希望这些属性中的任何一个为空。

我有一项提供 GPS 坐标的服务。它要求使用此服务的客户端检查每个属性是否为空,如果构造函数从不接受这些属性,则可以自动避免。

问题

有没有办法防止autorest在构造函数中生成可为空的参数?

0 投票
1 回答
709 浏览

c# - 自动生成的 C# 客户端应该如何处理可以返回不同类型的 API 调用?

我正在使用具有以下定义的服务:

这似乎会导致autorest生成一个object返回类型为 a 的 C# 客户端(我猜是因为该ProducesResponseType属性被指定了两次):

问题

处理返回不同对象的 API 的推荐方法是什么?

潜在的解决方案

  • 我可以修复客户端代码并转换结果以找到正确的类型(不好)。
  • 我可以修改 API(如果可能的话),使它只返回一个由 theAnimalModel和 the组成的对象ErrorModel(可能会更好)。
0 投票
0 回答
60 浏览

c# - 参数类型的路由约束参考 - 长列表

我正在我的 ASP.NET 核心控制器上编写一个 GET 方法,该方法将 long 列表作为参数。

我需要编写一个路由约束参考,以便在尝试根据 swagger 定义生成包时, autorest可以找到参数类型。在上面的代码中,Autorest 会抛出一个错误,因为它不知道 param 使用什么类型accessorIds

问题是我找不到这种情况下的路由约束,因为列表不是文档中的选项。

0 投票
1 回答
1060 浏览

typescript - 将不记名令牌发送到 autorest typescript 客户端

我正在使用autorest生成用于访问 RESTful Web 服务的 TypeScript 客户端。所有 REST api 都在寻找承载令牌进行身份验证,但我没有找到将令牌传递给自动生成的 TypeScript 客户端的方法。

我确实尝试过搜索 autorest 文档。看起来我需要使用 ServiceClientCredentials 但我没有找到任何示例代码。

有谁知道如何在 TypeScript 中使用 ServiceClientCredentials?

我使用以下命令生成 TypeScript 客户端

0 投票
0 回答
689 浏览

c# - 如何处理单个 Web API 调用返回的不同模型?

我正在使用提供此操作的 API:

此调用可以返回UserModel是否一切正常或ErrorModel请求是否错误的列表。

使用swaggerand autorest,我得到一个自动生成的客户端,该客户端具有此方法返回一个对象:

在该方法中,算法检查状态代码。如果状态码是 200,那么它会构建一个列表UserModel

但是,如果状态码为 400,则ErrorModel正在构建 的实例:

因此,每当我使用此方法时,我都必须检查返回的对象的类型,以确定我是否有UserModel一个ErrorModel.

当我调用自动生成的客户端时,我必须这样做:

这会在运行时而不是编译时推动任何类型安全检查,这反过来又会导致错误。

问题

如何在 C# 中处理这种情况而不必依赖运行时类型检查?

0 投票
0 回答
365 浏览

c# - 服务如何将通用 JsonPatchDocument<> 转移到另一个服务?

我已经构建了一个在 Azure (ASP.Net Core 2.1) 上运行的应用程序,其中涉及微服务和客户端应用程序:

客户端应用程序(Android)--calls--> 微服务 A(网关)--forwards-> 微服务 B

在微服务B中,我在 an 中定义了以下方法Controller

该方法接受 aJsonPatchDocument以应用于 a EntityModel。生成招摇并运行 autorest 后,我​​得到以下自动生成的方法:

这个自动生成的客户端被微服务A使用,它有一个类似的控制器,接受 JsonPatchDocument。

问题

但是,我似乎失去了类型约束:不再宣传微服务B需要一个EntityModel类型的更新列表。

问题

微服务A如何在无需操作数据的情况下将泛型传输JsonPatchDocument<>到微服务B ?

0 投票
1 回答
822 浏览

.net-core - swagger-document-override/md-override-loader - 失败

当我将 Autorest 托管在运行 IIS 的服务器 2012R2 上时,我能够使用我的 api 生成代码

但是,当我尝试使用 localhost url 运行它时,我收到一条无法读取的消息。

我可以在浏览器中阅读 swagger.json

我正在使用命令

输出是

在github 上研究了这个问题后,我尝试使用 dotnet run 启动 api,但没有帮助。

我尝试在具有管理员权限的 dos 命令外壳中运行 autorest

根据 github 问题,我可以将 swagger.json 保存到文件并通过引用该文件生成代码。

这不是一个很好的解决方案。

0 投票
0 回答
169 浏览

c# - 从 Autorest 生成的代码中深度克隆对象

我正在使用 Autorest 生成代码来调用我的 api。

我想在我的单元测试中使用以下内容

但是,当我尝试运行此代码时,我收到一个错误提示

表示类型

我不想通过生成的代码添加属性

[可序列化]

每种类型,因为下次生成时代码将被覆盖。

我在Git Hub 项目上查看了这个问题,它提到

如果招摇规范有这样的模型定义

那么 Autorest 生成的 SDK 应该能够正确地序列化和反序列化(往返)未知属性。

今天,生成的 C# 客户端通过 Dictionary AdditionalProperties 支持这一点。

所以现在我想了解什么是 Autorest 规范以及我是如何设置它的。

在 startup.cs 我有配置

在 ConfigureServices 我有

0 投票
0 回答
33 浏览

typescript - 未找到插件“建模器”。Autorest 生成 TypeScript 代理

我正在尝试通过 AutoRest 为 PetStore.yaml 示例生成 TypeScript 代理,但我无法做到。我收到一个错误:

未找到插件“建模器”。

代理生成对于 c#、java、Go、nodejs、python 运行良好,但对于 TypeScript 和 Ruby 则因此错误而失败。

我在 Windows 10 的节点 v.8.11.4 上运行 AutoRest v.2.0.4302。

有人知道这个问题的解决方案吗?