问题标签 [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 投票
1 回答
636 浏览

c# - Swashbuckle:在数组类型中设置不可为空的属性

我正在使用 autoRest 从 swagger 模式生成一个新客户端。我在模型中有 DateTime 列表

这是从该属性生成的 Json 招摇模式

这是我运行 autoRest 后得到的结果

我想获得一个类似这样的不可为空的 dateTime 属性


0 投票
2 回答
1311 浏览

c# - 如何将 HttpClientFactory 与 AutoRest 生成的客户端一起使用

AutoRest 生成的客户端没有合适的构造函数来使用 services.AddHttpClient() 方法。那么我们怎样才能解决这个问题呢?

现在我们有了具有这样签名的公共构造函数。

但是因为它有 bool disposeHttpClient 参数,所以我们不能直接在 AddHttpClient() 方法中使用它来将客户端服务配置到 DI 中。令我深感遗憾的是,HttpClientFactory 不包含具有这样签名的方法 AddHttpClient 的覆盖版本:

0 投票
2 回答
752 浏览

swagger - 使用 NSwag 和 AutoREST 创建一个代码客户端/扁平化控制器

我正在尝试使用 NSwag 和 Autorest 为 api 创建一个代码包装器。

以前我使用 Swashbuckle 生成 swagger 文件。它生成了带有 operationIds 格式的 swagger 文件actionMethod。这导致 Autorest 生成一个深度为 1 的代码客户端。所有的动作都在顶级级别。

由于各种原因,我需要将 swagger 生成更改为 NSwag。这会生成格式为 的 operationIds controller_actionMethod。这导致 AutoRest 创建一个复合类,该类公开具有每个控制器操作的单独类。

怎么可能

  • 更改 NSwag 生成 operationIds 的方式
  • 更改 Autorest 映射 operationId 的方式

注意:我知道我可以手动更改 swagger.json,但我想保持一致的自动化流程来生成代码客户端。

0 投票
0 回答
407 浏览

xml - Autorest 休息客户端代码生成器不适用于 XML 响应类型

我正在尝试使用 swagger 2.0 和https://github.com/Azure/autorest (Autorest) 为 Rest Enspoint 生成 C# 代码。如果 API 服务响应类型是,它们可以正常工作,application/json但如果是application/xml,则在对对象的响应的反序列化过程中失败。我相信这是因为 xmlns(命名空间本身没有对象)。有没有人尝试autorest在发送媒体类型应用程序/xml 的服务上使用并取得成功?

任何示例都会有所帮助,这是我得到的错误

这是 xml 文件,我正在为其创建端点。https://repo1.maven.org/maven2/junit/junit/4.13-beta-1/junit-4.13-beta-1.pom

我用一堆工具创建了 swagger 2.0 模式。

0 投票
2 回答
511 浏览

c# - 我应该如何在 asp.net mvc 5 中使用 autofac 注入带有 TokenProvider 的 Autorest 客户端?

我想通过使用 autofac 正确注入一个使用 api 的 autorest 客户端依赖项(用户在登录后将有自己的令牌使用,但他们可以在登录前使用 api,因为某些方法不需要令牌)。我知道这不是直接的 autorest 问题,它更多的是关于 autofac 但我想给出确切的例子,所以我可以获得更好的建议(也许我做错了,这是一个概念问题)。我查找了一些示例,我发现了一些示例,但在所有示例中,它们只是为一个用户实现,他们没有使用 tokenprovider,他们只是传递了一个预先知道的令牌(这不是用户的令牌,而是用于应用程序)。

我尝试的是使用包装参数(已经注册的多个依赖项将彼此作为构造函数参数)注册 autorest 客户端到容器中。

这就是我注册服务的方式:

和我的服务:

这是我得到的例外

内部异常无法将类型的对象Autofac.Core.ResolvedParameter转换为类型Microsoft.Rest.ServiceClientCredentials

0 投票
1 回答
857 浏览

autorest - System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification 调用 Autorest 生成的代码

我有一个单元测试,调用一个使用 Autorest 生成的代码来调用我的 Api 的服务。

我希望我的单元测试显示我的 Api 抛出的错误,但服务的错误处理中似乎存在错误。

我正在使用以下命令生成代码来使用我的 api。

生成的“客户端代码”包含

我有一个单元测试来调用生成的代码

在哪里

和 MyApiService 包含(具有更改的名称空间)

apicaller 在哪里

我的 Api 引发 InternalServerError 但是,当我运行单元测试时,客户端代码中出现错误。

错误发生在

并且是

我该如何解决这个问题?

我注意到 HttpOperationResponse 的代码是

这是 GetAvailableCarriersResponse 的结构

[更新]

在 ApiCaller ExecuteAsync 中执行以下操作。

如果我此时发现错误,它是(编辑的) ToString() 返回

我编辑了上面代码中的一些名称以简化和混淆。

[更新]

问题似乎与 ApiCaller.ExecuteAsync 的 getHeaders 参数有关

执行异步

[更新]

如果我检查 ExecuteAsync 中抛出的 ex1,我可以使用

但我如何获得错误描述?

0 投票
0 回答
319 浏览

angular - AutoRest 的 TypeScript 客户端的 HttpInterceptor

我对 TypeScript 和 Angular 还是很陌生。我有http拦截器:

当我通过 HttpClient 从 '@angular/common/http' 发送 GET 请求时,let resp = await this.http.get('http://localhost').toPromise();我可以在标题中看到我的 TEST 标题项。

我还使用 autorest 为我的休息服务生成 TypeScript 客户端(@microsoft.azure/autorest-core: 2.0.4302),并且当我调用生成的客户端自定义 TEST 标头的任何方法时,不会将其添加到查询中。
我认为 AutoRest 也通过相同的 HttpClient 生成 HTTP 查询,应该由HttpInterceptor......
也许我这样做完全错误,它应该以这种方式工作吗?或者有没有办法拦截由 AutoRest 生成的代码发出的 http 请求?

0 投票
1 回答
1029 浏览

c# - AutoRest 在构造函数中需要 ServiceClientCredentials,但如果不实例化客户端对象,我就无法获取该数据

我使用 AutoRest 生成了一个 API 客户端并正在使用该--add-credentials参数,以便我可以传入一个不记名令牌。为了获得令牌,我需要能够实例化对象并像这样调用我的登录方法:

问题是每个构造函数都需要ServiceClientCredentials. 据我了解,我需要创建一个TokenCredentials包含令牌字符串的实例。但我不能这样做,因为不调用 Login 就无法获取令牌字符串。如果没有令牌字符串,我就无法调用 Login。

我确定我只是误解了如何使用 API 客户端。但是关于我在这里做错了什么的任何想法?

0 投票
0 回答
325 浏览

c# - AutoRest 不会为 C# 客户端 SDK 的查询字符串参数生成枚举

我有一个从查询字符串接受的 asp.net Web API Enum。Swagger 文档如下所示:

swagger UI 生成带有枚举值的下拉列表,以供选择,如下所示: 在此处输入图像描述

当我使用 AutoRest 生成 C# 客户端 SDK 时,它使它成为一个字符串参数。有没有办法在 AutoRest 生成的客户端 SDK 上使其 Enum,以便使用我的 SDK 的人可以使用 Enum 而不必在调用 API 时传递字符串。

0 投票
1 回答
135 浏览

authentication - Autorest:在查询字符串中进行身份验证

我正在使用需要通过查询字符串进行身份验证的 REST Api。

更具体地说,招摇的安全定义是

但是,各个操作不包含api_key作为参数。与标头不同,我不能只创建一个在 HttpClient 上设置默认标头的构造函数。

如何生成让我设置 api 密钥的代码客户端?

附加说明:我也接受其他生成器,如 NSwag。不幸的是,截至 2019-06,NSwag不处理生成中的安全定义