經常使用的接口形式(即下面的 例二):php
開發語言爲PHP,數據格式爲Json,傳輸協議爲http,提交數據爲Post方式,字符編碼均使用utf-8html
(客戶端)數據的提交:sql
php 經過CURL 發送http的post請求 http://www.cnblogs.com/wangyuman26/p/5545370.html數據庫
(服務端)數據的接收:json
$data=file_get_contents("php://input"); //獲取輸入的數據流 數組
$jsonArray = json_decode($data, true); //將得到的數據進行對象序列化,返回array安全
(服務端)數據的返回:函數
echo json_encode($array);post
例一:this
經過接口獲取一篇文章。
接口須要傳入文章的id,經過sql語句向數據庫查詢文章的內容,而後以json的格式echo出便可,
即:安卓或IOS工程師獲取經過接口獲取到了json格式的數據,在作進一步的處理,顯示在手機上。
說明:開發語言爲PHP,數據格式爲Json,傳輸協議爲http,提交數據爲Get方式,字符編碼均使用utf-8。
例二:
開發語言爲PHP,數據格式爲Json,傳輸協議爲http,提交數據爲Post方式,字符編碼均使用utf-8。
說明:①設置接口接口返回值編碼 header("Content-type:text/plain;charset=UTF-8");
②由於爲Post方式提交數據,因此提交數據可使用Json的格式,如:
data='{
"serviceName": "login",
"queryParameters": {
"password": "123456",
"mobile": "xxxxxxxxxx"
}
}'
IndexController.class.php class IndexController extends Controller { public function index(){ header("Content-type:text/plain;charset=UTF-8"); $index = new IndexService(); $array = $index->index(); echo json_encode($array); } } IndexService.class.php class IndexService { public function index(){ $array['status'] = 1; $array['comment'] = '參數不全!'; try{ $data=file_get_contents("php://input"); //獲取輸入的數據流 $jsonArray = json_decode($data); //將得到的數據進行對象序列化。 $serviceName = $jsonArray->serviceName; $param = $jsonArray->queryParameters; /***********************************************************************************/ switch($serviceName){ case 'login': $member = new MemberService(); $array = $member->login($param); break; case 'orderDetail': $order = new OrderService(); $array = $order->orderDetail($param); break; //…………………… } /*************************************************************************************/ }catch (Exception $ex){ $array['status'] = 1; $array['comment'] = '程序錯誤:'.$ex->getMessage(); } return $array; } } OrderService.class.php class OrderService { //訂單詳情。 public function orderDetail($param){ $orderId = $param->orderid; $order = M('Order'); $map['id'] = $orderId+0; $rs = $order->where($map)->find(); $array['status'] = 1; $array['comment'] = '未查到數據!'; if($rs){ $rs['crosscity'] = $this->crossCity($rs['id']); $array['status'] = 0; $array['data'] = $rs; $array['comment'] = '查詢成功!'; } return $array; } }
接口說明文檔(範文1):
開發者 版本 說明 日期
XXX 1.0 原始開發 XXX
說明
本接口供休息休息項目中Android+IOS上的APP調用,開發語言爲PHP,數據格式爲Json,傳輸協議爲http,提交數據爲Post方式,字符編碼均使用utf-8。
接口地址
http://xxxxxx.com
一:獲取用戶資料 memberInfo
提交數據:
{
"serviceName": "memberInfo",
"queryParameters": {
"userid": "xx"
}
}
參數說明:
參數 必填 類型 說明
serviceName 是 varchar 指令:memberInfo
queryParameters 是 數組
userid 是 int 會員id
返回數據:
{
"status": "0",
"comment": "成功獲取我的信息",
"responseParameters": {
"id": "21",
"companyid": "5"
………………
}
}
參數說明 :
參數 類型 說明
status Int 返回狀態:
0成功
1錯誤緣由1
2錯誤緣由2
comment Varchar 註釋
項目中的總結:
1:接口的返回值中的數據,最好贊成都是字符串類型,方便IOS和安卓開發人員的處理。
{
"status": 0, //這個能夠不是字符串
"comment": "發送成功...",
"data": { //裏面的最好都是字符串類型
"id": "22",
"verify-phone": "1316113129X",
"verify-code": "644115"
}
}
即:變量都爲字符串類型,有引號包着。或者使用類型轉換函數strval(),轉換爲字符串類型。
2:設置接口返回值的編碼
使用header函數
在控制器或頁面裏面header("content-type:text/html; charset=utf-8");
3:安全性
①須要有一個加密規則
即每次請求接口,須要根據規則加密一段字符串,接口那邊也根據規則加密一段字符串,判斷與接收的字符串是否一致,若是一致容許本次的請求。
規則好比能夠是:md5(「項目簡稱」+「請求接口的名稱」+「固定的幾個字母」)
②接收的參數爲整型時,要作強制轉化爲整型處理
③接收的參數爲字符串時,要作處理
4:要考慮低版本的兼容
-一、版本更新後,要考慮對低版本的功能是否有影響
//版本升級:新添加的參數 (邏輯層須要新增參數,加默認值來兼容舊版本。) $new_driverid = isset($param->new_driverid) ? intval($param->new_driverid) : -1;