APIJSON是一种专为API而生的JSON网络传输协议,以及基于这套协议实现的对象关系映射库。
授权
使用APIJSON查询或者更改需要API令牌,MassCMS允许您为每个项目设置一个或多个API令牌。
生成 API 令牌
在MassCMS系统中,设置-项目设置-API访问中可创建API令牌。单个项目可创建多个API令牌,可针对不同的使用场景设置不同的权限。
生成API令牌时令牌内容只出现一次,确保正确保存令牌内容,生成后无法再次看到。
API令牌分为只读和所有权限两个权限,生成时可根据使用需求,选择合适的权限。
接口鉴权
API令牌用于控制对查询和更改内容的访问,API令牌必须通过http请求头传递。请求格式如下:
其中CALLS-SIDE的值为当前项目的AppId和当前时间的时间戳经CBC模式AES加密后的字符串,APITOKEN的值为MassCMS系统中创建的api令牌和当前时间时间戳经CBC模式AES加密后的字符串。
AES加密所用的key
为123456789MASSCMS
,密钥偏移量iv
为TRUEKEY123456789
。
示例代码如下:
const key = CryptoJS.enc.Utf8.parse('123456789MASSCMS')
//十六位十六进制数作为密钥偏移量
const iv = CryptoJS.enc.Utf8.parse('TRUEKEY123456789')
// 在发送请求之前做些什么
let CALLSSIDE = JSON.stringify({
openApiStatus: true,
projectAppId: 'Pxxxxx', //此处请填写项目实际使用的AppId
timestamp: Date.now(),
})
let callssideSrcs = CryptoJS.enc.Utf8.parse(CALLSSIDE)
let callsside = CryptoJS.AES.encrypt(callssideSrcs, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7,
})
let APITOKEN = JSON.stringify({
apiToken:'xxxxxxxx',//此处请填写项目实际生成的API令牌
timestamp: Date.now(),
})
let apitokenSrcs = CryptoJS.enc.Utf8.parse(APITOKEN)
let apitoken = CryptoJS.AES.encrypt(apitokenSrcs, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7,
})
config.headers['CALLS-SIDE'] = callsside.ciphertext.toString().toUpperCase()
config.headers['API-TOKEN'] = apitoken.ciphertext.toString().toUpperCase()