本文档将介绍在开放平台后台挂载 API 路由后,如何进行调用。主要步骤为配置授权、生成签名、访问调用。
*此步骤可选
在调用凭证页面点击创建应用,填写名称描述即可。目前应用默认为hmac
认证
创建成功后点击查看详情即可查看Consumer的详细信息
目前开放平台后台的 API 路由默认的鉴权方式为 hmac-auth。需要在 API 路由的插件中启用 hmac-auth 和 consumer-restriction。hmac-auth 无需配置,在consumer-restriction 的 whitelist 中添加调用凭证(Consumer),即可完成授权
hmac-auth 的鉴权方式下,需要通过 key 和 secret 生成 SIGNATURE,key 和 secret 查看调用凭证详情,需要使用已授权的调用凭证访问路由,否则会返回403:
生成方式参考:APISIX-plugins-hmac-auth
import base64
import hashlib
import hmac
import datetime
from urllib import parse
def generate_sign_string(request_url, method, ak, sk, signheaders):
o = parse.urlparse(request_url)
path = o.path.split("/api")[1]
query_array = parse.parse_qs(o.query)
new_query = []
for k, v in query_array.items():
new_query.append(parse.unquote(k) + '=' + parse.quote(v[0]))
new_query.sort()
query_str = '&'.join(new_query)
header_str = ""
for index1 in signheaders:
headerKey = index1
HeaderValue = signheaders[index1]
headerKeyValue = headerKey + ":" + HeaderValue + "\n"
header_str += headerKeyValue
# 暂时时间写死也能请求成功
# GMT_FORMAT = '%a, %d %b %Y %H:%M:%S GMT'
# gmt_date = datetime.datetime.utcnow().strftime(GMT_FORMAT)
gmt_date = "Tue, 19 Jan 2021 11:33:20 GMT"
sign_str = method + '\n' + path + '\n' + query_str + '\n' + ak + '\n' + gmt_date + '\n' + header_str
message = bytes(sign_str, 'utf-8')
secret = bytes(sk, 'utf-8')
hash = hmac.new(secret, message, hashlib.sha256)
hash.hexdigest()
signature = base64.b64encode(hash.digest()).decode("utf-8")
print(sign_str)
print(signature)
return signature
url = "https://open.datastory.com.cn/api/indicator.knowledge.user.list.uat"
method = "POST"
accessKey = "AppKey";
secret = "AppSecret";
signheader = {
"User-Agent": "PostmanRuntime/7.29.0"
}
generate_sign_string(url, method, accessKey, secret, signheader)
如果本地不能执行python代码,可以在这里执行: https://c.runoob.com/compile/9/
参考文档,将生成的SIGNATURE,以及其他必要的参数添加到请求头,得到:
curl --location --request POST 'https://open.datastory.com.cn/api/indicator.knowledge.user.list.uat' \
--header 'X-HMAC-SIGNATURE: 生成的签名' \
--header 'X-HMAC-ALGORITHM: hmac-sha256' \
--header 'X-HMAC-ACCESS-KEY: c49d9e70-6d71-4967-a2f2-1e0b4cca075b' \
--header 'Date: Tue, 19 Jan 2021 11:33:20 GMT' \
--header 'User-Agent: PostmanRuntime/7.29.0' \
--header 'X-HMAC-SIGNED-HEADERS: User-Agent'
您需要按照“协议://域名/api/路径”的格式拼接API路由的访问地址
例如:
访问地址为:http://open.dev.datastory.com.cn/api/datastory.appstore.v1.applications.options
产品咨询
020-38061725
微信扫描二维码在线咨询