问题标签 [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.
c# - 我们应该为从 C# 中的 Microsoft.Rest.ServiceClient 派生的客户端使用单例吗?
使用从 swagger 规范(例如与 Azure 资源管理器相关联的那些)生成的 Azure .NET SDK 时,生成的库利用 Microsoft AutoRest 客户端运行时和各种“客户端”都继承自“服务客户端”。
我们一直在使用 DocumentDB Client,并阅读了很多关于在 .NET 中使用本机 HttpClient 的问题。Microsoft 建议对这两个客户端使用单例模式,因为它们在内部是如何工作的,尽管使用单例模式存在众所周知的问题。在这些情况下,这是必要的。
因此,我们为这些情况制定了使用和管理单例的策略,因此我们想知道是否应该对派生自 ServiceClient 的 Azure REST 客户端使用相同的策略。如果它使用 HttpClient 那将是有意义的。
注意:此问题不是寻求有关单例或客户端的一般开发人员建议的问题,而是针对与 AutoRest 客户端运行时相关的 Microsoft 开发团队基于其内部工作原理的特定问题。
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 中?
api - 如何使用 AutoRest 客户端传递客户端证书
我们使用 AutoRest 来生成基于 API Swagger 文件的客户端代码。
我正在尝试将客户端证书传递给 API。但注意到生成的客户端代码不接受 WebRequestHandler。
生成的代码如下所示:
我觉得我在这里遗漏了一些东西。有没有人设法使用 AutoRest 发送客户端证书?
试过这个,但 webRequestHandler 总是为空:
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 包的情况下生成包配置文件?谢谢。
nuget - Autorest.exe 0.7.3 仅适用于 64 位?
我正在尝试设置一个项目,其中包含一个名为 Autorest 的包。这是通过 NuGet 安装的,在项目的 packages 文件夹中是一个可执行工具 Autorest.exe。不幸的是,这个版本是 64 位的,我无法运行该工具来从我的 Web 服务中获取我的 API。我能做些什么?
c# - Json 序列化改变 DataTime
我目前正在从 .net MVC5 网站调用 rest api,并使用 AutoRest (0.17.3) 从 rest api swagger.json 生成代码。
一切正常,但是当我使用 put 方法时,它会将其中一个字段的日期时间更改一小时。我在自动生成的代码中找到了导致问题的位置:
它似乎正在改变将对象序列化为 Json 的时间。
我已经在 web.config 中设置了文化,但我们仍然遇到同样的问题。
有谁知道如何解决这个问题?如果可能在全局范围内,那么我们不必更改自动生成的代码。否则,我们必须记住每次重新生成代码时都要进行此更改。
非常感谢
安迪
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 获取访问令牌:
c# - 如何使 Autorest 不在扩展方法中生成可选参数
我有一个用于指定具有必需参数 userName 的方法的服务的 swagger json 文件。但是,Autorest 会生成一个扩展方法,此参数是可选的。这会导致最终用户感到困惑,因为他们可以调用该方法而不提供任何肯定会失败的东西。
Autorest 生成:
我希望它生成:
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?
c# - Autorest + Swagger 无法正确生成 ENUM
我有两个应用程序A和B。在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 命令)
结果是: