[TOC]
# 接口规范
## 接口地址及示例
1. 接口地址一般形式如下:
GET
> http://host.domain/path/method?timestamp=1468997543&signature=2d82262741090a52af52782e35c3e75646b46c4a¶meter1=value1&.......
POST
> URL: http://host.domain/path/method
> JSON: {
"userid":"ae48",
"passwordenc":"bXV5dXRv",
"ip":"1.1.1.1",
"timestamp":"1468997543,
"signature":"2d82262741090a52af52782e35c3e75646b46c4a"
}
2. 开发测试环境主机域名为:
> http://opensdk.ilifeceo.cn/hotel/
* * * * *
## 接口公共参数
>1. timestamp, 整数,为调用接口时的系统时间戳,要求调用接口的客户端设备时钟与接口服务器的时钟一致,误差不超过2秒。建议使用时钟同步机制,具体设置方法请自行百度;
>2. signature, 字符串,具体生成方法参看下文[接口安全机制]
* * * * *
## 接口安全机制
>1. 接口要求支持HTTP BasicAuthorization(基本认证),即所有接口请求必须设置相关的Header。Header内容与格式如下:key=Authorization, value=Basic base64(username:password)。[Basic与base64加密串中间有空格]
>2. 部分接口由于数据的安全性要求,启用签名机制。签名规则及步骤如下:
参与签名的字段包括公共字段timestamp, 对所有待签名参数按照字段名的ASCII 码从小到大排序(字典序)后,使用URL键值对的格式拼接成字符串string1。[这里需要注意的是所有参数名与参数值均需转化为小写字符。字段名和字段值根据"RFC 3986"编码,空格会被百分号编码(%20)]然后对string1附加密钥作sha1加密,即signature=sha1(string1+'&key='+{authkey})。
>3. 示例:
参数Json如:
{
"userid":"ae48",
"passwordenc":"bXV5dXRv",
"ip":"1.1.1.1",
}
>步骤一:对所有待签名参数按照字段名的ASCII 码从小到大排序(字典序)后,使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串string1。结果如下:
ip=1.1.1.1&passwordenc=bxv5dxrv×tamp=1468997543&userid=ae48
>步骤二:对string1进行sha1签名(示例附加密钥&key=n6pvxqesvqh8nagidcbjj-fpgl30qywi),得到signature:
45a018de86606737c23a4b913852287e5acb3870
>步骤三:最后提交的实际参数如:
* GET
> http://host.domain/path/method?userid=ae48&passwordenc=bxv5dxrv&ip=1.1.1.1×tamp=1468997543&signature=45a018de86606737c23a4b913852287e5acb3870
* POST
>{
"userid":"ae48",
"passwordenc":"bXV5dXRv",
"ip":"1.1.1.1",
"timestamp":1468997543,
"signature":"45a018de86606737c23a4b913852287e5acb3870"
}