app接口的簡單案例 和一些總結

 

經常使用的接口形式(即下面的 例二):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;
相關文章
相關標籤/搜索