# 注意:本文檔后期不在跟新,新文檔遷移到:[http://www.openkit.cc/docs/kitadmin/#/](http://www.openkit.cc/docs/kitadmin/#/)
#### 首先感謝使用KitAdmin后臺開發框架
#### 反饋交流QQ群:696279396
## 請求規范
### 請求方式
- 數據接口通過 HTTP 的方式請求
### 返回方式
- 數據接口返回的數據格式統一使用json格式如:
```json
"header":{
??? "OpenKit-Appid":"{{you_app_id}}",
??? "OpenKit-Appkey":"{{加密后的key}}",
??? "Header-Time":"{{請求的時間}}"
}
```
### 接口編碼
- 所有提交及返回參數使用UTF-8編碼,服務端做UTF-8的URL解碼
## 訪問驗證
> 通用接口請求頭校驗規則,服務器需對請求Header進行如下校驗(適用于無需校驗用戶身份的接口)
### Header 驗證
|字段名 |數據類型| 字段說明| 備注|
|:--:|:--:|:--:|:--:|
|reqKey(MD5加密:32位大寫)| String |訪問口令 |加密參數,加密計算方法見備注|
|reqDate| String| 時間戳 |--|
> 備注:reqKey 計算方式
```js
var reqDate = Date.now();
var reqKey = sha1(appId +"openkit"+appkey+"openkit"+ reqDate); // 其中AppID與AppKey可在apicloud控制臺獲得
```
例子:var reqKey = sha1("A6918262863736"+"openkit"+" CD4C3537-8E7B-4D62-6837-B700CE2C41B5"+" openkit"+now);
### 返回狀態
|狀態碼 |說明|
|:--:|:--:|
|4001 |無訪問權限|
---
> 需要校驗用戶身份的接口校驗規則,需要在上面通用校驗的基礎上,再次對請求Header進行如下校驗
### Header 驗證
|字段名| 數據類型| 字段說明| 備注|
|:--:|:--:|:--:|:--:|
|reqToken (MD5加密:32位大寫)| String| 登錄口令| 加密參數,原始值及加密計算方式見備注|
|uid |String |用戶編號| 用戶在平臺中唯一標識|
|reqDate| String| 時間戳 |--|
### 返回狀態
|狀態碼|說明|
|:--:|:--:|
|4001| 用戶權限驗證失敗|
|4002| 用戶權限不足|
> 備注:Token 計算方式
```js
var reqDate = Date.now();
var reqToken = sha1(uid +" openkit"+token+"openkit"+ reqDate);
```
> 注:這里傳的reqKey為加密后的,當用戶第一次登錄是,后臺返回token,移動端需要加密后再次傳送。
### APP測試繞過校驗
為了放變測試,如果你在測試的時候想繞過校驗,那么你只要在傳參數的時候,`reqKey = "openkitadmin"` 或這 `reqToken="openkitadmin"` 即可
那么在項目上線的時候需要刪除`AppUtil.java` 文件下的 `isApp` 和 `isAppAndLogin` 方法中的下面的代碼
```
// isApp 中上線需要刪除的代碼
if("openkitadmin".equals(reqKey)){
return true;
}
// isAppAndLogin 中上線需要刪除的代碼
if("openkitadmin".equals(reqKey)){
return true;
}
```
### 接口里邊驗證APP
接口連驗證APP只要在方法前面添加下面的三行代碼即可
```java
// 如果是游客類的需要驗證APP
if(!AppUtil.isApp(request)){
return JSONObject.toJSON(KitUtil.returnMap("4001", StaticFinalVar.APP_ERR));
}
// 如果需要登錄后的接口驗證APP
if(!AppUtil.isAppAndLogin(isAppAndLogin)){
return JSONObject.toJSON(KitUtil.returnMap("4001", StaticFinalVar.APP_ERR));
}
```
#### 反饋交流QQ群:696279396
#### 贊助
