开发者社区> 问答> 正文

API调用方式有哪些?

API调用方式有哪些?

展开
收起
小天使爱美 2020-03-25 14:25:15 1236 0
2 条回答
写回答
取消 提交回答
  • 代码改变世界,我们改变代码

    看是什么样的接口:

    http

    rpc

    2020-03-25 14:52:07
    赞同 展开评论 打赏
  • 公共请求参数

    公共请求参数是指每个接口都需要使用到的请求参数。 参数名称 说明 选项 Authorization 用于验证请求合法性的认证信息,采用 AccessKeyId:Signature 的形式。 必须 Content-Length RFC 2616 中定义的 HTTP 请求内容长度。 必须 Content-Type RFC 2616 中定义的 HTTP 请求内容类型。 必须 Content-MD5 HTTP 协议消息体的 128-bit MD5 散列值转换成 BASE64 编码的结果。为了防止所有请求被篡改,建议所有请求都附加该信息。 必须 Date 请求的构造时间,目前只支持 GMT 格式。如果与 MNS 的服务器时间前后差异超过 15 分钟将返回本次请求非法。 必须 Host 访问 Host 值,例如:cr.cn-hangzhou.aliyuncs.com。 必须 Accept 客户端需要的返回值类型,支持 application/json 和 application/xml。 必须 x-acs-version API 版本号。参见 API版本。 必须 x-acs-region-id 地域(Region)指的是容器镜像所在的物理位置。参见 地域列表。 必须 x-acs-signature-nonce 唯一随机数,用于防止网络重放攻击。您在不同请求间要使用不同的随机数值。 必须 x-acs-signature-method 用户签名方式,目前只支持 HMAC-SHA1。 必须 示例

    GET /namespaces HTTP/1.1
    Authorization: acs ACSbW2iBbyX1Pk9N:mp/6Wdr18V3qAc5gbgsqMe/iB0c
    Content-Length: 0
    Content-Type: application/json;charset=utf-8
    Date: Wed, 23 May 2018 12:00:01 GMT
    Host: cr.cn-hangzhou.aliyuncs.com
    Accept: application/json
    x-acs-version: 2016-06-07
    x-acs-region-id: cn-hangzhou
    x-acs-signature-nonce: f63659d4-10ac-483b-99da-ea8fde61eae3
    x-acs-signature-version: 1.0
    x-acs-signature-method: HMAC-SHA1
    User-Agent: cr-sdk-python/3.0.0 (Darwin/15.2.0/x86_64;2.7.10)
    

    公共返回

    您发送的每次接口调用请求,无论成功与否,系统都会返回一个唯一识别码 RequestId。 示例

    XML 示例:

    <?xml version="1.0" encoding="UTF-8"?>
    <接口名称+Response>
      <!--返回请求标签-->
      <RequestId>4C467B38-3910-447D-87BC-AC049166F216</RequestId>
      <!--返回结果数据-->
    </接口名称+Response>
    

    JSON 示例:

    {
        "RequestId": "4C467B38-3910-447D-87BC-AC049166F216"
        /* 返回结果数据 */
    }
    

    地域列表 地域名称 所在城市 RegionId 华北1 青岛 cn-qingdao 华北2 北京 cn-beijing 华北3 张家口 cn-zhangjiakou 华北5 呼和浩特 cn-huhehaote 华东1 杭州 cn-hangzhou 华东2 上海 cn-shanghai 华南1 深圳 cn-shenzhen 香港 香港 cn-hongkong 亚太东北1 东京 ap-northeast-1 亚太东南1 新加坡 ap-southeast-1 亚太东南2 悉尼 ap-southeast-2 亚太东南3 吉隆坡 ap-southeast-3 亚太东南5 雅加达 ap-southeast-5 亚太南部1 孟买 ap-south-1 美国东部1 弗吉尼亚 us-east-1 美国西部1 硅谷 us-west-1 中东东部1 迪拜 me-east-1 欧洲中部1 法兰克福 eu-central-1 金融云地域列表 地域名称 所在城市 RegionId 华东2 (上海金融云) cn-shanghai-finance-1

    接入地址

    阿里云容器镜像的 Open API 接入地址为 cr.{regionId}.aliyuncs.com。具体 RegionId 参见地域列表 通信协议

    支持通过 HTTP 或 HTTPS 通道进行请求通信。为了获得更高的安全性,推荐您使用 HTTPS 通道发送请求。 请求方法

    使用 HTTP 的 PUT、 POST、 GET、 DELETE 等 HTTP Method 发送不同的请求。 请求参数

    每个请求都需要包含公共请求参数和指定 API 所特有的请求参数。 请求编码

    请求及返回结果都使用UTF-8字符集进行编码。

    调用 API 后返回数据采用统一格式,返回的 HTTP 状态码为 2XX,代表调用成功;返回 4XX 或 5XX 的 HTTP 状态码代表调用失败。

    调用成功返回的数据格式主要有 XML 和 JSON 两种。外部系统可以在请求时,传入参数来制定返回的数据格式。默认为 XML 格式。

    API 文档中的返回示例为了便于查看,做了格式化处理,实际返回结果没有进行换行、缩进等处理。 签名

    API 签名包含两部分:公共请求头(HTTP 协议 Header 参数和阿里云协议 Header 参数)和 CanonicalizedResource(规范资源),Body 不计入签名。

    Access Key ID和Access Key Secret由阿里云官方颁发给访问者(可以通过阿里云官方网站申请和管理),其中Access Key ID用于标识访问者的身份;Access Key Secret是用于加密签名字符串和服务器端验证签名字符串的密钥,必须严格保密,只有阿里云和用户知道。

    系统会对每个访问的请求进行验证,每个提交的请求都需要在请求中包含签名(Signature)信息。系统通过使用Access Key ID和Access Key Secret进行对称加密的方法来验证请求的发送者身份。如果计算出来的验证码和提供的一样,即认为该请求是有效的;否则请求将被拒绝处理,并返回 HTTP 403 错误。

    请求要求将签名包含在 HTTP Header 中,格式为 Authorization: acs [Access Key Id]:[Signature]。 签名计算方法

    签名计算方法如下:

    Signature = base64(hmac-sha1(VERB + "\n"
                + ACCEPT + "\n" +
                + Content-MD5 + "\n"
                + Content-Type + "\n"
                + Date + "\n"
                + CanonicalizedHeaders + "\n"
                + CanonicalizedResource))
    
    VERB 表示 HTTP 的 Method。比如示例中的 PUT。
    Accept 客户端需要的返回值类型,支持 application/json 和 application/xml。
    Content-MD5 表示请求内容数据的 MD5 值。
    Content-Type 表示请求内容的类型。
    Date 表示此次操作的时间,不能为空,目前只支持 GMT 格式。如果请求时间与服务器时间相差超过 15 分钟,系统会判定此请求不合法,并返回 400 错误。比如示例中的 Thu, 17 Mar 2018 18:00:00 GMT。
    CanonicalizedHeaders 表示 HTTP 中以 x-acs- 开始的字段组合。
    CanonicalizedResource 表示 HTTP 所请求资源的 URI (统一资源标识符)。比如 /namespaces。
    

    CanonicalizedHeaders

    CanonicalizedHeaders(即以 x-acs- 开头的 Header)在签名验证前需要符合以下规范:

    将所有以 x-acs- 为前缀的 HTTP 请求头的名字转换成小写字母。比如将 X-ACS-Meta-Name: TaoBao 转换为 x-acs-meta-name: TaoBao。阿里云规范请求头的名字是大小写不敏感的,建议全部使用小写。
    如果一个公共请求头的值部分过长,则需要处理其中的 \t、\n、\r、\f分隔符,将其替换为英文半角的空格。
    将上一步得到的所有 HTTP 阿里云规范头按照字典序进行升序排列。
    删除请求头和内容之间分隔符两端出现的任何空格。比如将 x-acs-meta-name: TaoBao,Alipay 转换为 x-acs-meta-name:TaoBao,Alipay。
    将所有的头和内容用 \n 分隔符分隔拼成最后的 CanonicalizedHeaders。
    

    CanonicalizedResource

    CanonicalizedResource 表示客户想要访问资源的规范描述,需要将子资源和 qurey 一同按照字典序,从小到大排列并以 & 为分隔符生成子资源字符串(? 后的所有参数)。

    http://cr.cn-hangzhou.aliyuncs.com/repository?name=repository1&namespace=namespace1
    

    CanonicalizedResource 应该为:

    /repository?name=repository1&namespace=namespace1
    

    版本

    更新时间:2018-05-23 13:28:07 API 版本 说明 2016-06-07 提供命名空间、仓库、镜像仓库等API

    2020-03-25 14:30:53
    赞同 展开评论 打赏
问答分类:
API
问答地址:
问答排行榜
最热
最新

相关电子书

更多
API 网关实践 立即下载
API 平台的安全实践 立即下载
API平台的安全实践 立即下载