1. 参数约定
为了程序测试方便,所有接口,就算出错,不论出什么错,在result字段也要回id字段。所以在处理代码的开头就把result里的id放置好。
index.php也要尽力把id字段放回到$result里。
1.1. 请求参数
地球号接口的字段有一套的规则,规定了一系列固定参数。地球号接口参数分为四部分:用户业务参数,网关常量参数,SDK参数,令牌参数。业务参数是用户在调用API请求时发送的业务参数。网关参数是请求在经过网关时,网关自动添加的参数。主要用来辅助权限控制。SDK参数是API请求调用时,SDK自动添加的参数。这些参数对统计,分析,定位
[!note|label:为什么AG所有可选参数必须配置默认?] 为了FC的index能够方便的检查各种请求的参数,FC要求所有AG的可选参数必须配置默认,因为如果不配置默认,参数就不会头传到FC。所以FC所有参数必须配置默认参数。
[!note] 注意命名规则,
XduaApiZoneAstate
的命名是个简称,表示XduaApiAssertZoneState
,因为太冗长,所以简化成Astate。
字段 | 位置 | 类型 | 样例 | 说明 |
---|---|---|---|---|
用户业务参数 | ||||
XduaApiVersion | head | string | API版本。用户自行填充,或者封装在SDK里。如果不指定,网关自动填充成1.0.0 | |
XduaClientDev | head | string | 请求设备的序列号.例如"mac:1e479fee578f"这样的字符串 | |
XduaAcceptLang | head | string | 客户端希望接受到的返回语言类型: zh=中文,en=英文0。默认使用中文 | |
Authorization | head | string | JWT令牌 | |
网关配置常量 | ||||
XduaApiEnable | head | string | true | "true"=接口使能/"Api Not Supported"=接口不支持(根本就没有这种接口)/"Api Not Implemented"=接口未实现 (还没有开发出来,未来会开发) |
XduaApiAstates | head | string | 1,3 | 按照app,zone,corp,shop,user,token的顺序,以半角逗号, 隔开,每个是个字符串,如13,13,035 分别表示各个要求的状态。app必须处在的状态。以半角逗号, 隔开,表示或者关系。* 表示对这个状态不检查。 |
XduaApiColor | head | string | X/R/G/B | X/R/G/B/A/D,API要求的令牌颜色。API要求的令牌颜色。 XRGB允许司中颜色令牌与或者*允许所有颜色的令牌。 |
XduaApiTokenType | head | string | A/U | A/U。API要求的令牌类型.A代表app是应用令牌,U代表usr是用户令牌。 |
XduaApiAudience | head | string | aHEVYhE1 | API要求的令牌受牌方,例如,社区(zone)操作的API要求令牌的持有者(aud字段)必须是"aHEVYhE1"这个应用app_id |
XduaApiSubject | head | string | AnoNymuS/*/u/i | API要求的令牌订阅者,地球号的所有算法服务,数据服务,登录服务,验码服务API要求令牌必须是匿名令牌。地球号的平台服务要求令牌不能是匿名令牌。 * 表示所有人都可以访问,u (小写)表示所有登录的用户可以访问,i (小写)表示只有创建者自己可以访问.其次AnoNymuS 表示匿名者可以访问,剩下如果还是8个字母,表示用户ID。只有这个ID才可以访问这个接口 |
XduaApiShop | head | string | XdUaXduA | API要求的令牌店铺必须是哪些店铺。 |
XduaApiRoles | head | string | Root,God | API允许访问者的角色列表,半角逗号隔开。有些系统服务要求必须是Root,God才可以操作。 |
XduaApiAction | head | string | CreateZone | 接口允许的动作列表,半角逗号隔开 |
XduaApiRule | head | string | CreateZone | 接口要求的权限,注意,接口可能不要求任何权限,像AddLogon就不需要任何权限。 |
XduaApiHttpSchema | head | string | HTTP/HTTPS | API要求访问的协议类型,因为网关传来的是大写,所以必须大写。 |
XduaApiResource | head | string | login | API要操作的地球号资源名称。API要操作的地球号资源名称。地球号里所有API都可以归类成对资源的操作,例如登录login就是一种资源。 |
XduaApiKparam | head | string | by+/+ustr | API接口关键参数提取模板。API接口关键参数提取模板。提取关键参数用来存放到日志表里。 |
网关自动填充参数 | ||||
CaClientIp | head | string | 无 | 客户端的IP |
CaClientUa | head | string | 无 | 客户端的UserAgent |
CaDomain | head | string | 无 | 客户端的域名 |
CaRequestHandleTime | head | string | 无 | 请求经过网关时的Unix时间。如果后端需要对请求进行时间戳校验,可以在 API 定义中选择系统参数 “CaRequestHandleTime” ,值为网关收到请求的格林威治时间。 |
CaAppId | head | string | 无 | API授权的应用ID。例如'6151834' |
CaRequestId | head | string | 无 | API请求的ID。例如6079D3AC-93F8-4297-8853-3CAAAA14044F |
CaApiName | head | string | 无 | API在网关控制台的名字。AddLogin |
CaHttpSchema | head | string | 无 | API的协议。必须是大写HTTP 或者HTTPS |
CaProxy | head | string | 无 | 'AliCloudAPIGateway' |
CaCloudMarketInstanceId | head | string | 无 | 市场ID。这个参数不是必须的,在后端不做必须性检查。似乎,只有上了云市场才有这个参数 |
令牌参数 | 参考令牌格式 | |||
CaOpenId.aud | head | string | 无 | 参考令牌格式 |
CaOpenId.iss | head | string | 无 | 参考令牌格式 |
CaOpenId.iat | head | string | 无 | 参考令牌格式 |
CaOpenId.sub | head | string | 无 | 参考令牌格式 |
CaOpenId.exp | head | string | 无 | 参考令牌格式 |
CaOpenId.jti | head | string | 无 | 参考令牌格式 |
CaOpenId.nbf | head | string | 无 | 参考令牌格式 |
CaOpenId.clr | head | string | 无 | 参考令牌格式 |
CaOpenId.ipm | head | string | 无 | 参考令牌格式 |
CaOpenId.dvm | head | string | 无 | 参考令牌格式 |
CaOpenId.own | head | string | 无 | 参考令牌格式 |
CaOpenId.tid | head | string | 无 | 参考令牌格式 |
CaOpenId.typ | head | string | 无 | 参考令牌格式 |
CaOpenId.tag | head | string | 无 | 参考令牌格式 |
CaOpenId.api | head | string | 无 | 参考令牌格式 |
CaOpenId.bug | head | string | 无 | 参考令牌格式 |
CaOpenId.zone | head | string | 无 | 参考令牌格式 |
CaOpenId.corp | head | string | 无 | 参考令牌格式 |
CaOpenId.shop | head | string | 无 | 参考令牌格式 |
CaOpenId.role | head | string | 无 | 参考令牌格式 |
CaOpenId.rule | head | string | 无 | 参考令牌格式 |
1.2. POST参数
在地球号设计里POST接口是创建资源用的,创建资源的字段有很多是公用的。这里列举一些公用的字段。这些字节的长度限制是全局有效的。
字段名 | 位置 | 类型 | 说明 | 描述 |
---|---|---|---|---|
name | body | String | 姓名 | 32个字节 |
avatar | body | String | 头像 | 40个字节 |
brief | body | String | 描述 | 64个字节 |
[!note|style:flat|label:avatar为什么要小于40字节?|iconVisibility:hidden] 因为md5码是32个字节,加上一个.号,后面可能的jpeg,webp后缀,40个字节足够了。除非各个接口有意指定这个接口的长度。
{
"id":"创建资源的id"
}
1.3. DELETE参数
在地球号设计里DELETE接口是删除资源用的,删除资源的ID字段是确定的。
字段名 | 位置 | 类型 | 说明 | 描述 |
---|---|---|---|---|
id | path | String | 资源ID | 8字节资源ID |
{
"id":"删除资源的id"
}
1.4. PUT参数
在地球号设计里PUT接口是修改资源用的,修改资源的ID字段是确定的,还有修改的内容放置在updates里
字段名 | 位置 | 类型 | 说明 |
---|---|---|---|
id | path | String | 资源ID |
updates | body | Json String | 字典表达的修改内容 |
返回格式
{
"id":"修改的资源的ID",
"updates":[
{"field":"字段名","old":"旧值","new":"新值"}
]
}
1.5. GET参数
在地球号设计里GET接口是详情资源用的,详情资源的ID字段是确定的,这里要注意,详情需要的fields字段和query一样。
字段名 | 位置 | 类型 | 说明 |
---|---|---|---|
id | path | String | 资源ID |
fields | query | String | 详情需要的字符串 |
format | query | String | 返回结果的格式。默认是"raw"。这是个隐藏字段,为未来而设。 |
[!note|style:flat|label:为什么查询返回里要有where字段?|iconVisibility:hidden] where字段必须是字典,返回where是为了让客户端更好的调试。
返回格式
{
"id":"修改的资源的ID",
"format":"raw",
"data":{
{"field":"value1"}
}
}