全部产品
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 钉钉智能硬件
阿里云SDK开发指南

使用CommonRequest

更新时间:2018-02-02 16:12:57

Common 调用方式

当您需要访问的API没有产品 SDK 提供时。可以采用泛用型的API调用方式,使用 CommonRequest,实现任意 OpenAPI 接口的调用,CommonReques 有如下特点:

  • 轻量:只需 Core 包即可发起调用,无需下载安装各产品线SDK。
  • 简便:无需更新 SDK 即可调用最新发布的API。
  • 快速迭代

开始使用

使用 CommonRequest 时,请配合相应的API文档使用,以查询API的相关信息,您可以在文档中心查询到所有产品的 API 文档。

发起一次 Common 请求,需要您查询到以下几个参数:

  • 域名(endpoint):即该产品的通用访问域名,一版可以在”调用方式”页查看到

  • API版本(version):该API的版本号,以 YYYY-MM-DD 的形式表现,一般可以在”公共参数”页面查到

在”公共参数”页面中,version 字段一般以 Version 参数体现,部分页面以 x-acs-version 参数体现

  • 当调用的 OpenAPI 为 Rpc 风格接口时(大部分阿里云产品 OpenAPI 为 Rpc 风格),例如:ECS、RDS,需要赋值以下字段:

    • Action字段,例如 ECS-RunInstances 的 Action 为 RunInstances,在这种情况下,您可以通过 request.Action = "<Action>" 来指定
  • 当调用的 OpenAPI 风格为 Restful 风格接口时,例如:CS(容器服务), 需要赋值以下字段:

    • ResourcePath字段,例如容器服务-查看所有集群实例会包含一段类似 GET /clusters HTTP/1.1 的 RequestLine,在这种情况下,您可以通过 request.UriPattern = "<UriPattern>" 来指定

Tips: 如何区分Rpc风格和Restful风格

  • 简单来说,API参数中包含 Action 字段的是 RPC 风格,需要指定请求资源路径的是Restful风格
  • 一般情况下,每个产品内,所有 API 的调用风格是统一的每个 API 仅支持特定的一种风格调用
  • 传入错误的标识,可能会调用到其他 API,或收到 “ApiNotFound” 的错误信息

OpenAPI Explorer

部分产品,您也可以通过https://api.aliyun.com来获取API的参数信息。

代码示例

调用 RPC 风格接口

以下我们以云服务器 ECS 产品的 DescribeInstanceStatus API为例,展示如何通过 Common 调用方式调用 RPC 风格接口,该接口信息也可以在 OpenAPI Explorer - DescribeInstanceStatus中找到

注意:您需要替换示例中的 your-region-id、your-access-key-id 和 your-access-key-secret 的值。

  1. using Aliyun.Acs.Core;
  2. using Aliyun.Acs.Core.Exceptions;
  3. using Aliyun.Acs.Core.Profile;
  4. class Sample
  5. {
  6. static void Main(string[] args)
  7. {
  8. // 构建一个客户端实例,用于发起请求
  9. IClientProfile profile = DefaultProfile.GetProfile(
  10. "<your-region-id>",
  11. "<your-access-key-id>",
  12. "<your-access-key-secret>");
  13. DefaultAcsClient client = new DefaultAcsClient(profile);
  14. try
  15. {
  16. // 构造请求
  17. CommonRequest request = new CommonRequest();
  18. request.Domain = "ecs.aliyuncs.com";
  19. request.Version = "2014-05-26";
  20. // 因为是 RPC 风格接口,需指定 ApiName(Action)
  21. request.Action = "DescribeInstanceStatus";
  22. request.AddQueryParameters("PageNumber", "1");
  23. request.AddQueryParameters("PageSize", "30");
  24. // 发起请求,并得到 Response
  25. CommonResponse response = client.GetCommonResponse(request);
  26. System.Console.WriteLine(response.Data);
  27. }
  28. catch (ServerException ex)
  29. {
  30. System.Console.WriteLine(ex.ToString());
  31. }
  32. catch (ClientException ex)
  33. {
  34. System.Console.WriteLine(ex.ToString());
  35. }
  36. }
  37. }

调用 Restful 风格接口

以下我们以容器服务的查看所有集群实例 API 为例,展示如何通过 Common 调用方式调用 Restful 风格接口。

注意:您需要替换示例中的 your-region-id、your-access-key-id 和 your-access-key-secret 的值。

  1. using Aliyun.Acs.Core;
  2. using Aliyun.Acs.Core.Exceptions;
  3. using Aliyun.Acs.Core.Profile;
  4. class Sample
  5. {
  6. static void Main(string[] args)
  7. {
  8. // 构建一个客户端实例,用于发起请求
  9. IClientProfile profile = DefaultProfile.GetProfile(
  10. "<your-region-id>",
  11. "<your-access-key-id>",
  12. "<your-access-key-secret>");
  13. DefaultAcsClient client = new DefaultAcsClient(profile);
  14. try
  15. {
  16. // 构造请求
  17. CommonRequest request = new CommonRequest();
  18. request.Domain = "cs.aliyuncs.com";
  19. request.Version = "2015-12-15";
  20. // 因为是Restful风格接口,需指定 UriPattern
  21. request.UriPattern = "/clusters";
  22. // 发起请求,并得到 Response
  23. CommonResponse response = client.GetCommonResponse(request);
  24. System.Console.WriteLine(response.Data);
  25. }
  26. catch (ServerException ex)
  27. {
  28. System.Console.WriteLine(ex.ToString());
  29. }
  30. catch (ClientException ex)
  31. {
  32. System.Console.WriteLine(ex.ToString());
  33. }
  34. }
  35. }
本文导读目录