阿里云OpenAPI ClientToken 是怎么来的,有人知道的吗?是随机一个字符串就可以吗?
https://help.aliyun.com/zh/ecs/developer-reference/how-to-ensure-idempotence#section-xxp-fmg-ydb
幂等是 部分接口才有的字段。举个例子哈 ,这个接口最下面那个入参就是ClientToken,第一次创建实例 传递ClientToken = 123,第二次继续传递ClientToken = 123 就会拦截这次请求 防止因超时 网络波动等原因 多次创建预期外实例.
https://api.aliyun.com/api/Ecs/2014-05-26/RunInstances?lang=JAVA
此回答整理自钉群“阿里云 OpenAPI SDK 自签名服务群”
阿里云OpenAPI的ClientToken参数用于防止请求重复提交(幂等性控制),它是请求中必须携带的一个标识符,由调用方生成并在一定时间内保持唯一。ClientToken并不是一个随机字符串那么简单,而是要求满足以下特点:
唯一性:每次请求都应使用不同的ClientToken,通常的做法是将时间戳、随机数和其他能够确保唯一性的字段组合起来生成。
幂等性:发送同样的请求(除ClientToken外其他参数相同)两次,只要ClientToken不同,阿里云会将其视为两个不同的请求;而如果ClientToken相同,则阿里云会认为这是重复请求,第二次请求不会被执行。
生成ClientToken的一种常见做法是:
import uuid
import time
def generate_client_token():
return str(uuid.uuid1()) + str(int(time.time()))
client_token = generate_client_token()
是,输入任意字符串,用于保证请求幂等性。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。