淘先锋技术网

首页 1 2 3 4 5 6 7

【摘要】

云服务可以将企业所需的软硬件、资料都放到网络上,在任何时间、地点,使用不同的IT设备互相连接,实现数据存取、运算等目的。当前,云服务已经成为时代潮流,常见的云服务有公共云(Public

Cloud)与私有云(Private Cloud)两种。公有云中腾讯云是普及最广的,应用最多的,同时也是API接口最齐全的,支持多种语言调用。

【正文】

1、腾讯云API简介

腾讯云提供了丰富的接口,可以通过各种编程语言快捷的条用腾讯云提供的各种服务,腾讯云接口的调用提供两种方式:

n根据接口文档直接调用(需要自己组合接口调用的验证签名以及公共参数);

n使用腾讯云开发者工具套件(SDK)调用;

2、SDK调用

1.登录腾讯云控制台,进入访问控制页面;

080908image.png

2.获取调用接口必须的验证参数:secretid和secretkey;

016462image.png

3.开发环境安装腾讯云开发者工具套件(SDK);

pip install tencentcloud-sdk-python

060547image.png

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

091513image.png

5.实例化一个认证对象,入参需要传入腾讯云账户secretId,secretKey,实例化产品的client对象(需要输入一个地域接入参数)

cred =

credential.Credential('AKIDhDcnkVVprc7MODqGIN5k','c*IZaLrBI9mAIK7gz3rPj')

client =

cvm_client.CvmClient(cred,'ap-beijing')

023601image.png

6.实例化一个请求对象,然后通过client对象调用想要访问的接口,通过SDK的内置方法resp.RegionSet(不同接口访问数据的方法不同,也可以直接使用resp.from_json_string获取数据)即可获取接口数据

req = models.DescribeRegionsRequest()

resp = client.DescribeRegions(req)

print resp.RegionSet

063737image.png

3、直接调用API接口

1.直接调用腾讯云API接口是通过向腾讯云API的服务端地址发送请求,并按照接口说明在请求中加入相应请求参数来完成的。

2.腾讯云API的请求由四部分组成:

n服务地址(接口的访问地址)

n通信协议(腾讯云API的大部分接口都通过HTTPS进行通信)

n请求方法(支持POST和GET两种请求方式)

n请求参数(分公共参数和接口请求参数两种:公共参数即使调用某个产品的所有接口都需要提供的参数,接口请求参数是不同接口需要的特定参数)

以下以python调用账号相关类别里的查询项目列表接口为例说明调用方法

1.获取secretid和secretkey

085147image.png

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)

058756image.png

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)

096640image.png

058686image.png

4.进行参数排列:对所有请求参数按参数名做字典序升序排列,python默认对字典的参数进行升序排列。

002990image.png

5.拼接请求字符串

signature_old

=''foriinsorted(data):

signature_old = signature_old + i +"="+str(data[i]) +"&"signature_old =

signature_old[:-1]

query='GET'+ url +'?'+

signature_old

037239image.png

6.使用加密算法生成请求签名

hmac_str

= hmac.new(secret_key.encode('utf8'), query.encode('utf8'), hashlib.sha1).digest()

signature = base64.b64encode(hmac_str)

055155image.png

7.请求参数添加签名,并使用get请求方法发起接口访问请求,请求状态码为200,表示接口调用成功。

data["Signature"] = signature

resp= requests.get('https://'+

url,params=data)

052008image.png