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

使用CommonRequest进行访问

更新时间:2018-02-13 13:45:01

Common调用方式

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

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

开始使用

请配合相应的API文档使用,以查询API的相关信息。您可以在 文档中心 查询到所有产品的API文档。发起一次Common请求,需要您查询到以下几个参数:

  • 域名(domain):即该产品的通用访问域名,一版可以在”调用方式”页查看到
  • API版本(version):该API的版本号,以’YYYY-MM-DD’的形式表现,一般可以在”公共参数”页面查到

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

  • 当调用的OpenAPI为Rpc风格时(大部分阿里云产品OpenAPI为Rpc风格),例如:ECS、RDS,需要赋值以下字段:
    • Action字段,例如ECS-RunInstances 的Action为RunInstances使用request.ApiName = "<Action>"来指定API名称
  • 当调用的OpenAPI风格为Restful风格接口时,例如:CS(容器服务), 需要赋值以下字段:

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

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

OpenAPI Explorer

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

代码示例

调用Rpc风格的接口

我们以Ecs产品的DescribeInstanceStatus API为例

该接口信息也可以在OpenAPI Explorer - DescribeInstanceStatus中找到

  1. from aliyunsdkcore.client import AcsClient
  2. from aliyunsdkcore.request import CommonRequest
  3. client = AcsClient('{your_access_key_id}', '{your_access_key_secret}', '{your_region_id}')
  4. request = CommonRequest()
  5. request.set_domain('ecs.aliyuncs.com')
  6. request.set_version('2014-05-26')
  7. request.set_action_name('DescribeInstanceStatus')
  8. # or:
  9. # request = CommonRequest(domain='ecs.aliyuncs.com', version='2014-05-26', action_name='DescribeInstanceStatus')
  10. request.add_query_param('PageNumber', '1')
  11. request.add_query_param('PageSize', '30')
  12. response = client.do_action_with_exception(request)

调用Restful风格的接口

我们以容器服务的查看所有集群实例为例

  1. from aliyunsdkcore.client import AcsClient
  2. from aliyunsdkcore.request import CommonRequest
  3. client = AcsClient('{your_access_key_id}', '{your_access_key_secret}', '{your_region_id}')
  4. request = CommonRequest()
  5. request.set_domain('cs.aliyuncs.com')
  6. request.set_version('2015-12-15')
  7. request.set_uri_pattern('/clusters')
  8. # or:
  9. # request = CommonRequest(domain='ecs.aliyuncs.com', version='2014-05-26', uri_pattern='/clusters')
  10. response = client.do_action_with_exception(request)
本文导读目录