API友好

新版ThinkPHP針對(duì)API開發(fā)做了很多的優(yōu)化,并且不依賴原來(lái)的API模式擴(kuò)展。

數(shù)據(jù)輸出

新版的控制器輸出采用Response類統(tǒng)一處理,而不是直接在控制器中進(jìn)行輸出,通過(guò)設(shè)置default_return_type或者動(dòng)態(tài)設(shè)置不同類型的Response輸出就可以自動(dòng)進(jìn)行數(shù)據(jù)轉(zhuǎn)換處理,一般來(lái)說(shuō),你只需要在控制器中返回字符串或者數(shù)組即可,例如如果我們配置:

'default_return_type'=>'json'

那么下面的控制器方法返回值會(huì)自動(dòng)轉(zhuǎn)換為json格式并返回。

namespace app\index\controller;

class Index 
{
    public function index()
    {
        $data = ['name'=>'ThinkPHP','url'=>'ThinkPHP.cn'];
        return ['data'=>$data,'code'=>1,'message'=>'操作完成'];
    }
}

訪問(wèn)該請(qǐng)求URL地址后,最終可以在瀏覽器中看到輸出結(jié)果如下:

{"data":{"name":"ThinkPHP","url":"ThinkPHP.cn"},"code":1,"message":"\u64cd\u4f5c\u5b8c\u6210"}

如果你需要返回其他的數(shù)據(jù)格式的話,控制器本身的代碼無(wú)需做任何改變。

支持明確指定輸出類型的方式輸出,例如下面指定JSON數(shù)據(jù)輸出:

namespace app\index\controller;

class Index 
{
    public function index()
    {
        $data = ['name'=>'ThinkPHP','url'=>'ThinkPHP.cn'];
        // 指定json數(shù)據(jù)輸出
        return json(['data'=>$data,'code'=>1,'message'=>'操作完成']);
    }
}

或者指定輸出XML類型數(shù)據(jù):

namespace app\index\controller;

class Index 
{
    public function index()
    {
        $data = ['name'=>'ThinkPHP','url'=>'ThinkPHP.cn'];
        // 指定xml數(shù)據(jù)輸出
        return xml(['data'=>$data,'code'=>1,'message'=>'操作完成']);
    }
}

核心支持的數(shù)據(jù)類型包括view、xml、jsonjsonp,其他類型的需要自己擴(kuò)展。

錯(cuò)誤調(diào)試

由于API開發(fā)不方便在客戶端進(jìn)行開發(fā)調(diào)試,但ThinkPHP1Trace調(diào)試功能支持Socket在內(nèi)的方式,可以實(shí)現(xiàn)遠(yuǎn)程的開發(fā)調(diào)試。

設(shè)置方式:

'app_trace' => true,
'trace'     => [
    'type'             => 'socket', 
    // socket服務(wù)器
    'host'             => 'slog.ThinkPHP.cn',
],

然后安裝chrome瀏覽器插件后即可進(jìn)行遠(yuǎn)程調(diào)試,詳細(xì)參考調(diào)試部分。

文檔最后更新時(shí)間:2018-04-25 17:52:42

文檔
目錄

深色
模式

切換
寬度