【摘要】
云服务可以将企业所需的软硬件、资料都放到网络上,在任何时间、地点,使用不同的IT设备互相连接,实现数据存取、运算等目的。当前,云服务已经成为时代潮流,常见的云服务有公共云(Public
Cloud)与私有云(Private Cloud)两种。公有云中腾讯云是普及最广的,应用最多的,同时也是API接口最齐全的,支持多种语言调用。
【正文】
1、腾讯云API简介
腾讯云提供了丰富的接口,可以通过各种编程语言快捷的条用腾讯云提供的各种服务,腾讯云接口的调用提供两种方式:
n根据接口文档直接调用(需要自己组合接口调用的验证签名以及公共参数);
n使用腾讯云开发者工具套件(SDK)调用;
2、SDK调用
1.登录腾讯云控制台,进入访问控制页面;
2.获取调用接口必须的验证参数:secretid和secretkey;
3.开发环境安装腾讯云开发者工具套件(SDK);
pip install tencentcloud-sdk-python
4.从SDK包导入相应的产品模块
from tencentcloud.common import credential
from
tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.cvm.v20170312 import cvm_client, models
5.实例化一个认证对象,入参需要传入腾讯云账户secretId,secretKey,实例化产品的client对象(需要输入一个地域接入参数)
cred =
credential.Credential('AKIDhDcnkVVprc7MODqGIN5k','c*IZaLrBI9mAIK7gz3rPj')
client =
cvm_client.CvmClient(cred,'ap-beijing')
6.实例化一个请求对象,然后通过client对象调用想要访问的接口,通过SDK的内置方法resp.RegionSet(不同接口访问数据的方法不同,也可以直接使用resp.from_json_string获取数据)即可获取接口数据
req = models.DescribeRegionsRequest()
resp = client.DescribeRegions(req)
print resp.RegionSet
3、直接调用API接口
1.直接调用腾讯云API接口是通过向腾讯云API的服务端地址发送请求,并按照接口说明在请求中加入相应请求参数来完成的。
2.腾讯云API的请求由四部分组成:
n服务地址(接口的访问地址)
n通信协议(腾讯云API的大部分接口都通过HTTPS进行通信)
n请求方法(支持POST和GET两种请求方式)
n请求参数(分公共参数和接口请求参数两种:公共参数即使调用某个产品的所有接口都需要提供的参数,接口请求参数是不同接口需要的特定参数)
以下以python调用账号相关类别里的查询项目列表接口为例说明调用方法
1.获取secretid和secretkey
2.查询该类别产品接口的公共参数,并初始化公共参数
data= {'Action':'','Nonce': random.randint(10000,99999),'Region':'bj','SecretId':'AKIDhDcnkVVHH0UheQTEE1Yprc7MODqGIN5k','Timestamp':int(time.time()),
}
Signature参数需要根据接口调用参数经过签名方法组合生成(可参考:https://cloud.tencent.com/document/api/377/4214)
3.查看具体接口的参数以及接口的访问地址,更新参数
data= {'Action':'DescribeProject','Nonce': random.randint(10000,99999),'Region':'bj','SecretId':'AKIDhDcnkVVHH0UheQTEE1Yprc7MODqGIN5k','Timestamp':int(time.time()),'allList':1,
}
url='account.api.qcloud.com/v2/index.php'#(访问地址统一要加后缀/v2/index.php)
4.进行参数排列:对所有请求参数按参数名做字典序升序排列,python默认对字典的参数进行升序排列。
5.拼接请求字符串
signature_old
=''foriinsorted(data):
signature_old = signature_old + i +"="+str(data[i]) +"&"signature_old =
signature_old[:-1]
query='GET'+ url +'?'+
signature_old
6.使用加密算法生成请求签名
hmac_str
= hmac.new(secret_key.encode('utf8'), query.encode('utf8'), hashlib.sha1).digest()
signature = base64.b64encode(hmac_str)
7.请求参数添加签名,并使用get请求方法发起接口访问请求,请求状态码为200,表示接口调用成功。
data["Signature"] = signature
resp= requests.get('https://'+
url,params=data)