最终的请求 URL 的组成
最终的请求 URL 由以下几部分组成:
请求域名:查询私有网络列表(DescribeVpcEx)的请求域名为
vpc.api.qcloud.com
。实际的请求域名根据接口所属模块的不同而不同, 详情请参见各接口说明。请求路径: 云 API 的请求路径固定为
/v2/index.php
。最终请求参数串: 包括公共请求参数和接口请求参数。
最终的请求 URL 的拼接规则
最终的请求 URL 的拼接规则为:
https://
+ 请求域名
+请求路径
+ ?
+最终请求参数串
因此,我们得到最终的请求 URL 如下,其中前6个参数为公共请求参数,其后参数为接口请求参数。
https://vpc.api.qcloud.com/v2/index.php?Action=DescribeVpcEx&SecretId=您的secretId&Region=gz&Timestamp=1507645389&Nonce=59485&Signature=本串的签名(可参考后台示例程序或官网其它说明文档)&vpcId=vpc-2ari9m7h&offset=0&limit=1&orderDirection=desc
最终的请求 URL 的帮助小程序
获取最终请求 URL 的示例程序:
本示例修改自腾讯云官网提供的云 API Python SDK,旨在帮助用户了解签名及最终请求串。
正式使用时,建议使用 官网提供的 SDK,如
pip install qcloudapi-sdk-python
。 使用 SDK 时,可以方便的填写参数,而后实现云 API 调用,优于本示例程序。#!/usr/bin/python# -*- coding: utf-8 -*-import binasciiimport hashlibimport hmacimport sysimport timeimport randomtry:from urllib.parse import urlencodeexcept ImportError:from urllib import urlencodeclass Sign:def __init__(self, secretId, secretKey):self.secretId = secretIdself.secretKey = secretKeyif sys.version_info[0] > 2:self.Py2 = Falseelse:self.Py2 = Truedef make(self, requestHost, requestUri, params, method = 'POST', sign_method='HmacSHA1'):new_params = {}for param_key in params:if method == 'POST' and str(params[param_key])[0:1] == "@":continuenew_params[param_key] = params[param_key]#签名用的串有字典序的要求srcStr = method.upper() + requestHost + requestUri + '?' + "&".join(k.replace("_",".") + "=" + str(new_params[k]) for k in sorted(new_params.keys()))print "url string for making a signature: " + srcStrif sign_method == 'HmacSHA256':if self.Py2:hashed = hmac.new(self.secretKey, srcStr, hashlib.sha256)else:hashed = hmac.new(bytes(self.secretKey, 'latin-1'), bytes(srcStr, 'latin-1'), hashlib.sha256)else:if self.Py2:hashed = hmac.new(self.secretKey, srcStr, hashlib.sha1)else:hashed = hmac.new(bytes(self.secretKey, 'latin-1'), bytes(srcStr, 'latin-1'), hashlib.sha1)if self.Py2:return binascii.b2a_base64(hashed.digest())[:-1]else:return binascii.b2a_base64(hashed.digest())[:-1].decode()def getUrl(self, requestHost, requestUri, params):sign_str = self.make(requestHost, requestUri, params, method='GET')print "Signature: " + sign_strparams['Signature'] = sign_strdata_str = urlencode(params)final_url = "https://" + requestHost + requestUri + '?' + data_strreturn final_urldef main():'''本示例得到的最终请求串https://vpc.api.qcloud.com/v2/index.php?Nonce=2659996141967&SecretId=您的secretId&limit=1&offset=0&Action=DescribeVpcEx&Timestamp=1507699141&Region=gz&vpcId=vpc-2ari9m7h&orderDirection=desc&Signature=本代码自动填充的签名本示例程序步骤:1. 根据排序后的参数获得签名;2. 根据签名和参数获得最终请求串。注意:若您未安装 Python, 可执行`yum install python-pip`进行安装。本示例程序意义:本示例修改自腾讯云官网提供的云 api python SDK,旨在帮助用户了解签名及最终请求串。建议:正式使用时,使用官网提供 SDK,如"pip install qcloudapi-sdk-python"。'''secretId = '您的secretId'secretKey = '您的secretKey'params = {'Action':'DescribeVpcEx','SecretId': secretId,'Region': 'gz', #地域'Timestamp': int(time.time()), #时间'Nonce': random.randint(0,1000000), #随机整数'vpcId': 'vpc-2ari9m7h','offset': 0,'limit': 1,'orderDirection': 'desc',}sign = Sign(secretId, secretKey)final_url = sign.getUrl('vpc.api.qcloud.com', '/v2/index.php', params)print "final url: " + final_urlif (__name__ == '__main__'):main()