问题标签 [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 回答
2352 浏览

c# - 我们应该为从 C# 中的 Microsoft.Rest.ServiceClient 派生的客户端使用单例吗?

使用从 swagger 规范(例如与 Azure 资源管理器相关联的那些)生成的 Azure .NET SDK 时,生成的库利用 Microsoft AutoRest 客户端运行时和各种“客户端”都继承自“服务客户端”。

我们一直在使用 DocumentDB Client,并阅读了很多关于在 .NET 中使用本机 HttpClient 的问题。Microsoft 建议对这两个客户端使用单例模式,因为它们在内部是如何工作的,尽管使用单例模式存在众所周知的问题。在这些情况下,这是必要的。

因此,我们为这些情况制定了使用和管理单例的策略,因此我们想知道是否应该对派生自 ServiceClient 的 Azure REST 客户端使用相同的策略。如果它使用 HttpClient 那将是有意义的。

注意:此问题不是寻求有关单例或客户端的一般开发人员建议的问题,而是针对与 AutoRest 客户端运行时相关的 Microsoft 开发团队基于其内部工作原理的特定问题。

0 投票
1 回答
2191 浏览

asp.net-web-api - 如何在 Visual Studio 2017 中更新 AutoRest

上下文 我想通过在 Visual Studio 2017 中使用“Add”/“REST API Client...”将 AutoRest 生成的客户端用于 webapi 服务。但是,它给出了以下错误:

  • [信息] AutoRest Core 0.16.0.0
  • ...
  • [致命]错误生成客户端模型:不支持集合格式“multi”(在参数“xxx”中)。

旧版本的 AutoRest(例如 0.16.0)不支持“多”集合格式。所以我安装了最新版本的 AutoRest 0.17.3。使用 Nuget。但是当我使用“Add”/“REST API Client...”时,它仍然使用 0.16.0 版本的 AutoRest 并给我同样的错误。似乎 Visual Studio 2017 有一个内置的 AutoRest 版本 0.16 程序集。

问题 如何获取最新版本的 AutoRest 并将其集成到 Visual Studio 2017 中?

0 投票
2 回答
1247 浏览

api - 如何使用 AutoRest 客户端传递客户端证书

我们使用 AutoRest 来生成基于 API Swagger 文件的客户端代码。

我正在尝试将客户端证书传递给 API。但注意到生成的客户端代码不接受 WebRequestHandler。

生成的代码如下所示:

我觉得我在这里遗漏了一些东西。有没有人设法使用 AutoRest 发送客户端证书?

试过这个,但 webRequestHandler 总是为空:

0 投票
1 回答
385 浏览

c# - Azure Autorest 包依赖项还原

我正在使用 Azure 的 Autorest 从特定的 Swagger json 生成 C# 中的客户端代码。

虽然成功生成了代码,但没有使用它生成的 packages.config/packages.json 文件来恢复所有依赖的 nuget 包。我将生成的代码文件导入现有的 VS 项目并按照文档中的说明安装 Microsoft.Rest.ClientRuntime 包https://github.com/Azure/autorest/blob/v1.0.1-20170504-2300-nightly/ docs/client/proj-setup.md

无论如何,我可以在不手动安装 nuget 包的情况下生成包配置文件?谢谢。

0 投票
0 回答
78 浏览

nuget - Autorest.exe 0.7.3 仅适用于 64 位?

我正在尝试设置一个项目,其中包含一个名为 Autorest 的包。这是通过 NuGet 安装的,在项目的 packages 文件夹中是一个可执行工具 Autorest.exe。不幸的是,这个版本是 64 位的,我无法运行该工具来从我的 Web 服务中获取我的 API。我能做些什么?

0 投票
1 回答
429 浏览

c# - Json 序列化改变 DataTime

我目前正在从 .net MVC5 网站调用 rest api,并使用 AutoRest (0.17.3) 从 rest api swagger.json 生成代码。

一切正常,但是当我使用 put 方法时,它会将其中一个字段的日期时间更改一小时。我在自动生成的代码中找到了导致问题的位置:

它似乎正在改变将对象序列化为 Json 的时间。

我已经在 web.config 中设置了文化,但我们仍然遇到同样的问题。

有谁知道如何解决这个问题?如果可能在全局范围内,那么我们不必更改自动生成的代码。否则,我们必须记住每次重新生成代码时都要进行此更改。

非常感谢

安迪

0 投票
1 回答
7687 浏览

c# - 使用 AutoRest C# 客户端通过不记名令牌访问 Web API - TokenCredentials 不起作用

编辑 10/24 我认为这很可能是用户错误 - 在深入探讨这个问题之前,请参阅下面的答案以获得补救

TL;DR: 对于我的 OAuth 2.0 代码流...

为什么TokenCredentials我的 AutoRest 客户端无法使用?我没有将不记名令牌应用于请求/没有授权标头集

我知道我的管道已经工作了..

使用此 azure sample中的代码(不是 AutoRest 客户端),我可以成功获取我的access_token并且可以从受保护的 Web API 项目中获取 JSON..所以我已经排除了所有先决条件..我知道我的管道有效

我的 AutoRest 设置..

1.) 从 GitHub 下载这个 AutoRest repo v1.1.0

2.) 将我的 swagger JSON 下载到磁盘,另存为swagger.json

3.) 运行此命令行以生成 C# 文件:

autorest --input-file=swagger.json --csharp --output-folder=MyCorp_ApiClient_Tsl --namespace='MyCorp.ApiClient' --add-credentials

4.) 将生成的类复制到我的 .NET 4.6.2 网站中

5.) 这些是我的 NuGet:

这是不起作用的:

我已经尝试了上述的变体,使用不同的ctor TokenCredentials,但无论如何,我可以将断点放入MyAzureTracingHandler并查看请求没有应用授权标头..所以我得到了预期的401 Unauthorized响应。

如果我修改MyAzureTracingHandler为接受我的实例,TokenCredentials那么我可以强制请求应用适当的不记名令牌。

这行得通,但是感觉很hack-ish:

我从这里更改了我的原始客户端实例化片段:

对此:

在我这样做的SendAsync方法中:MyAzureTracingHander

难道我做错了什么?我认为在实例化我的客户端时我不应该传入ServiceClientCredentials两次。

附录 A - 通过 ADAL 获取访问令牌:

0 投票
1 回答
583 浏览

c# - 如何使 Autorest 不在扩展方法中生成可选参数

我有一个用于指定具有必需参数 userName 的方法的服务的 swagger json 文件。但是,Autorest 会生成一个扩展方法,此参数是可选的。这会导致最终用户感到困惑,因为他们可以调用该方法而不提供任何肯定会失败的东西。

Autorest 生成:

我希望它生成:

0 投票
1 回答
180 浏览

asp.net-web-api - Should My Swagger doc (aka Open API) define 500 response codes?

If I'm going to use a client generator like AutoRest, do I want that generated client to anticipate 500 errors?

Or, am I expected to wrap the client requests in try/catch?

Is this just a stylistic decision I need to make?

0 投票
3 回答
10713 浏览

c# - Autorest + Swagger 无法正确生成 ENUM

我有两个应用程序AB。在A上,我使用 swagger 来描述 API。在A上,我还定义了具有一些枚举属性的类。我想在B上生成客户端 API 。为此,我使用 Autorest。一切都很好,除了一件事 - 枚举。由于某种原因,枚举没有正确生成,并且属性类型(最初是枚举)是字符串类型或 int 类型(取决于DescribeAllEnumsAsStrings()的使用。我在下面的示例中使用了它,所以在这种情况下它是字符串) .

枚举定义通过招摇生成JSON:

Startup.cs 中的 Swagger 注册

自动休息命令:

生成的类(字符串而不是枚举):

我发现了这个:https ://github.com/Azure/autorest/tree/master/docs/extensions#x-ms-enum

有一些 x-ms-enum 扩展,但我不知道如何使用它。我尝试手动编辑 JSON 定义(我在下面的示例中所做的)但它也没有成功。生成的类包含object color = default(object)而不是第一个示例中的字符串,而不是枚举。

我会很高兴得到任何帮助。谢谢!

编辑: 1)完整的 Swagger 定义(结果类型:Sting):

在大摇大摆的定义中。在枚举定义之后是 "type": "string"

自动执行:

自动执行 结果:

结果

2)完整的Swagger定义(结果类型:对象):

在大摇大摆的定义中。在枚举定义之后我对“x-ms-enum”的实验

...或者我可以让它空着。结果是一样的

(现在让我们执行与以前相同的 autorest 命令)

结果是:

在此处输入图像描述