查询接口
QRY接口标准
GET:http://api.xdua.com/resource?
在地球号设计里QRY接口是个特别的接口,其接口是固定的,针对任何资源都是一样的。
字段名 | 位置 | 类型 | 说明 | 描述 | 可选 |
---|---|---|---|---|---|
apiv | head | string | API版本,默认是1.0.0 | 1.0.0 | 可选 |
Authorization | head | string | 客户端保存的鉴权token | Authorization字符串 | 必选 |
action | query | string | 接口动作 | 16个字符以内 | 可选 |
where | query | String | 查询条件 | 查询条件 | 这是一个json字符串做了urlencode后的结果 |
filter | query | String | 过滤类别 | 查询条件 | 这是一个json字符串做了urlencode后的结果 |
offset | query | int | 搜索开始的偏移条件 | 获取授权的开始个数,若不设置默认为0 | 可选 |
limit | query | int | 搜索数量 | 获取授权的数量,若不设置默认为20 | 可选 |
page | query | int | 搜索页号 | 如果page存在的话,就可以忽略offset的效果,和limit一起使用。使用page搜索 | 可选 |
order | query | String | 顺序 | 必须按照"字段:ASC/DESC"方式书写,如 name:DESC,默认的order是inc:DESC | 可选 |
为什么where不用base64, Base64 可以将二进制转码成可见字符方便进行http传输,但是base64转码时会生成“+”,“/”,“=”这些被URL进行转码的特殊字符,导致两方面数据不一致。 客户端向服务器传递参数时,参数中的“+”全部变成了空格,原因是URL中默认的将“+”号转义了。所以要用urlencode
接口反馈格式
地球号接口设计严格按照API网关要求,分为Path参数,Query参数,Body参数. 请求头里的Authorization字段放置token或签名.
地球号接口返回数据格式
//status=0时,表示成功,reason是Success或success. result字段是以字典放置key和value的方式放置结果数据. debug字段字典以key:value方式放置调试信息,这些信息用于api开发者自己查看,不应该暴露给普通用户.
{
error:0,
reason: 'Success',
result:{ key1:value1,key2:value2,key3:value3 },
debug: { key1:value1,key2:value2},
}
//qry请求的result是{"list":[],"maxpage":12}这种结构,其中list是查询出来的列表,maxpage是当前查询套件对应的最大页数.
//status=1时,表示失败,reason是字符串格式失败原因. result以字典方式放置一些各接口可能用到的结果数据. debug字段字典以key:value方式放置调试信息,这些信息用于api开发者自己查看,不应该暴露给普通用户.
{
error:0,
reason: 'AppNotExisted',
result:{ key1:value1,key2:value2,key3:value3 },
debug: { key1:value1,key2:value2},
}
在设计原则上, result和debug必须是字典,不应该是数组.
FAQ
早期接口是用户自己定义action,为什么后来改到后台设置。
[!note] 为什么action是个系统官方必须字段,却用的是小写?因为action是暴露给前端调用者的。