ThinkPHP 使用rest

jerry thinkphp 2015年11月15日 收藏

ThinkPHP的rest与普通controller可以使用一个类共用Controller,只要从RestController继承。这是与yii2不同的地方。

<?php

namespace Home\Controller;

use Think\Controller\RestController;

class HomeController extends RestController {
    protected $allowMethod = array (
            'get',
            'post',
            'put' 
    ); 
    // Rest允许的请求类型列表
    protected $allowType = array (
            'xml',
            'json' 
    ); 

    Public function read_json() {
        // 输出id为1的Info的json数据
        $this->response(['a'=>'b'],'json');
    }

}

访问:
/Home/read/.json

获取参数的方式:

 public function query($SellId){
        $Form=M('web_hm_sells');
        $data=$Form->find($SellId);
        $this->response($data,'json');
    }
    /**
    * @param int $p    第几页
    * @param int $rows 每页大小
    * page
    * /Hm/Sells/getlist/p/1/rows/5
    */
    public function getlist($p,$rows){
        $Data=M('web_hm_sells');

        $map=[];
        $count = $Data->where($map)->count();// 查询满足要求的总记录数 $map表示查询条件
        $Page = new  \Think\Page($count, $rows);// 实例化分页类 传入总记录数
        //var_dump($Page);die();
        $list = $Data->where($map)->order('SellId')->limit($Page->firstRow.','.$Page->listRows)->select();

        $this->response([
                'd'=>[
                'Table'=>[
                    'rows'=>$list
                ],
                'Pagecount'=>($Page->totalRows-1)/$rows+1,
                'Total'=>$Page->totalRows,
                'Page'=>$p
                ]],'json');
    }

请求

$.get('/Home/read/id/2');1

ThinkPHP要求php版本为5.3+,但如果要支持shorthand array写法,需要5.4+。
shorthand array:
$a=[‘key’=>’value’];