110 lines
4.1 KiB
Plaintext
110 lines
4.1 KiB
Plaintext
|
|
/*
|
|||
|
|
请求结构简介
|
|||
|
|
最近更新时间:2019-08-01 19:14:44
|
|||
|
|
|
|||
|
|
编辑 查看pdf
|
|||
|
|
在这篇文章中:
|
|||
|
|
服务地址
|
|||
|
|
通信协议
|
|||
|
|
请求方法
|
|||
|
|
请求参数
|
|||
|
|
字符编码
|
|||
|
|
对腾讯云的 API 接口的调用是通过向腾讯云 API 的服务端地址发送请求,并按照接口说明在请求中加入相应的请求参数来完成的。腾讯云 API 的请求结构由:服务地址、通信协议、请求方法、请求参数和字符编码组成。具体描述如下:
|
|||
|
|
|
|||
|
|
服务地址
|
|||
|
|
腾讯云 API 的服务接入地址与具体模块相关,详细请参见各接口相关描述。
|
|||
|
|
|
|||
|
|
通信协议
|
|||
|
|
腾讯云 API 的大部分接口都通过 HTTPS 进行通信,为您提供高安全性的通信通道。
|
|||
|
|
|
|||
|
|
请求方法
|
|||
|
|
腾讯云 API 同时支持 POST 和 GET 请求。
|
|||
|
|
|
|||
|
|
注意:
|
|||
|
|
|
|||
|
|
POST 和 GET 请求不能混合使用,若使用 GET 方式,则参数均从 Querystring 取得;
|
|||
|
|
若使用 POST 方式,则参数均从 Request Body 中取得,而 Querystring 中的参数将忽略。
|
|||
|
|
两种请求方式的参数格式规则相同,一般情况下使用 GET 请求,当参数字符串过长时推荐使用 POST。
|
|||
|
|
如果用户的请求方法是 GET,则对所有请求参数值均需要做 URL 编码,若为 POST,则无需对参数编码。
|
|||
|
|
GET 请求的最大长度根据不同的浏览器和服务器设置有所不同,例如,传统 IE 浏览器限制为 2K,Firefox 限制为 8K;对于一些参数较多、长度较长的 API 请求,建议您使用 POST 方法以免在请求过程中会由于字符串超过最大长度而导致请求失败。
|
|||
|
|
对于 POST 请求,您需要使用 x-www-form-urlencoded 的形式传参,因为云 API 侧是从 $_POST 中取出请求参数的。
|
|||
|
|
请求参数
|
|||
|
|
腾讯云 API 的每个请求都需要指定两类参数:公共请求参数以及接口请求参数。其中公共请求参数是每个接口都要用到的请求参数,具体可参见 公共请求参数,而接口请求参数是各个接口所特有的,具体见各个接口的“请求参数”描述。
|
|||
|
|
|
|||
|
|
字符编码
|
|||
|
|
腾讯云 API 的请求及返回结果均使用 UTF-8 字符集进行编码。
|
|||
|
|
*/
|
|||
|
|
package model
|
|||
|
|
|
|||
|
|
import (
|
|||
|
|
"fmt"
|
|||
|
|
"time"
|
|||
|
|
|
|||
|
|
"goutil/mathUtil"
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
// CommonRequest 公共请求参数对象
|
|||
|
|
type CommonRequest struct {
|
|||
|
|
// Action 指令接口名称(必须)
|
|||
|
|
Action string
|
|||
|
|
|
|||
|
|
// 地域参数(必须)
|
|||
|
|
Region string
|
|||
|
|
|
|||
|
|
// Timestamp 当前UNIX时间戳(必须)
|
|||
|
|
Timestamp uint64
|
|||
|
|
|
|||
|
|
// Nonce 随机正整数(必须)
|
|||
|
|
Nonce uint32
|
|||
|
|
|
|||
|
|
// SecretId 在云API密钥上申请的标识身份的SecretId(必须)
|
|||
|
|
SecretId string
|
|||
|
|
|
|||
|
|
// 请求签名,用来验证此次请求的合法性,需要用户根据实际的输入参数计算得出。
|
|||
|
|
Signature string
|
|||
|
|
|
|||
|
|
// 签名方式,目前支持 HmacSHA256 和 HmacSHA1。只有指定此参数为 HmacSHA256 时,才使用 HmacSHA256 算法验证签名,其他情况均使用 HmacSHA1 验证签名。
|
|||
|
|
SignatureMethod string
|
|||
|
|
|
|||
|
|
// 队列名称(此属性虽然不是API文档中的公共属性,但是在队列模型中确实事实上的公共属性,所以将其转移到此处)
|
|||
|
|
queueName string
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// AssembleParamMap 组装请求参数字典
|
|||
|
|
// 返回值
|
|||
|
|
// map[string]interface{}:请求参数字
|
|||
|
|
func (this *CommonRequest) AssembleParamMap() map[string]string {
|
|||
|
|
result := make(map[string]string)
|
|||
|
|
|
|||
|
|
// 组装参数
|
|||
|
|
result["Action"] = this.Action
|
|||
|
|
result["Region"] = this.Region
|
|||
|
|
result["Timestamp"] = fmt.Sprintf("%d", this.Timestamp)
|
|||
|
|
result["Nonce"] = fmt.Sprintf("%d", this.Nonce)
|
|||
|
|
result["SecretId"] = this.SecretId
|
|||
|
|
result["SignatureMethod"] = this.SignatureMethod
|
|||
|
|
result["queueName"] = this.queueName
|
|||
|
|
|
|||
|
|
return result
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// NewCommonRequest 新建公共请求参数对象
|
|||
|
|
// 参数
|
|||
|
|
// action:指令接口名称
|
|||
|
|
// region:地域
|
|||
|
|
// secretId:在云API密钥上申请的标识身份的SecretId
|
|||
|
|
// queueName:队列名称
|
|||
|
|
// 返回值
|
|||
|
|
// *CommonRequest:公共请求参数对象
|
|||
|
|
func NewCommonRequest(action, region, secretId, queueName string) *CommonRequest {
|
|||
|
|
return &CommonRequest{
|
|||
|
|
Action: action,
|
|||
|
|
Region: region,
|
|||
|
|
Timestamp: uint64(time.Now().Unix()),
|
|||
|
|
Nonce: mathUtil.GetRand().Uint32(),
|
|||
|
|
SecretId: secretId,
|
|||
|
|
SignatureMethod: "HmacSHA256",
|
|||
|
|
queueName: queueName,
|
|||
|
|
}
|
|||
|
|
}
|