```用户的唯一标识,智城云系统内部用户唯一标识,32位随机字符串```
> **OpenKey**
```每次用户登录后会返回的有效密钥,每次会话中有效,有效期72小时,超过有效期需要重新进行鉴权。```
> **ApplicationId**
```开发者的应用ID,不同的应用ID有独立的用户系统,比如相同的手机号可以在不同的应用下分别注册,应用ID可以在开发者个人中心中找到```
> **ApplicationKey**
```应用Key,平台会分配给每一个应用一个单独的Key,平台会根据应用ID来判断请求是否是正确的,应用Key可以在开发者个人中心中找到```
# 命名规范
OpenAPI采用标准的[Restful规范](http://www.ruanyifeng.com/blog/2014/05/restful_api.html)定义接口
HTTP请求的几大关键要素:
- 请求协议
包括安全的和非安全的协议,安全的一般为:HTTPS,非安全的为:HTTP
- 请求主机域名
请求的域名,决定请求哪种环境,例如:api.machtalk.net,test.api.machtalk.net
- 请求地址
请求的相对路径,类似 /v1/user,请求地址一般为名词
- 请求头信息
头信息包括标准的头信息,如:Accept-Language,Keep-Alive等,智城云的标准开放参数也放在头信息中,如openid,openkey,applicationid,applicationkey,开放参数统一使用小写。注意Content-Type头信息对于文本型的请求统一使用application/json
- 请求方式
请求方式包括四种:GET,POST,PUT,DELETE;标识请求的操作类型
| 请求方式 | 含义 |
| --- | --- |
| GET | 获取资源 |
| POST | 增加资源 |
| PUT | 修改资源 |
| DELETE | 删除资源 |
## **OpenAPI命名规范**
> - 使用有含义的英文单词
> - API中包含版本号
> - 使用请求方式决定操作类型,而不是将操作类型放在API地址上
> - 同一模块尽量使用相同的层级,比如用户模块使用/v1/user/XX/YY,保证可读性
> - API的参数会进行业务校验
# 接口的输入和输出
OpenAPI的输入与输出都是JSON,提交的参数以流的形式传参给服务器,服务器会把每个请求都理解为JSON字符串
智城云OpenAPI采用标准的Restful接口风格,标准的文本类接口的content-type使用application/json,**输入和输出均使用标准的JSON格式**,对于文件上传的接口的content-type使用multipart/form-data,对于文件下载的接口的content-type使用application/octet-stream
**设备输入的参数长度不能超过2K**
# 接口安全规范
> 接口请求,必须保证每次请求的安全合法,智城云OpenAPI使用SHA1对请求信息进行运算得到一个摘要进行请求的签名
智城云OpenAPI分为两类API:**需要用户鉴权的**和**不需要用户鉴权的**
* 不需要用户鉴权的:例如用户信息重复性检查,发送验证码,获取验证码凭证等,具体的可以看参数说明,不需要用户鉴权的加密方法为:SHA1\(HTTPMethod+RequestURI+params+applicationkey\)
* 需要用户鉴权的:例如查看用户信息,修改密码等,具体的可以看参数说明,需要用户鉴权的加密方法为:SHA1\(HTTPMethod+RequestURI+params+ts+openkey+applicationkey\)
## 接口限制
> 平台的接口调用并不是无限制的。为了防止开发者号的程序错误而引发服务器负载异常,默认情况下,每个应用调用接口都不能超过一定限制,当即将超过一定限制时,调用对应接口会收到错误码,同时会发送告警邮件给企业负责人和平台运维人员,基本的访问限制规则为每小时默认允许每小时调用接口4000次,超过阈值则抛错,1小时后恢复接口调用。
> 对于接口请求的IP如果超过一定限制也会放入请求黑名单,同时提供告警
> 平台会统计接口响应速度报表,提供接口服务质量依据