使用cakePHP 3.5创建没有视图的Rest API

时间:2017-09-16 07:23:46

标签: cakephp cakephp-3.x cakephp-3.1 cakephp-3.4 cakephp-3.3

我正在尝试创建没有视图的Rest API,并计划在angular 2应用程序中使用这些api。对此有任何想法吗?

3 个答案:

答案 0 :(得分:1)

Cake让这非常容易。我学到的一些东西没有观点。

设置_serialize变量

$data = ['cheeses' => ['gouda', 'pepper jack', 'cheddar']];
$this->set('responseData', $data);
$this->set('_serialize', 'responseData');

抛出错误的请求异常和其他与网络相关的异常

Cake会为你呈现漂亮的json视图。

在发出时设置您的接受标头,并将ajax请求设置为application / json

您可以为api版本使用蛋糕前缀

查看Stateless Authentication了解您的api

答案 1 :(得分:0)

AppController.php中,使用这些参数,所有控制器都将在json中呈现

public function beforeRender(Event $event)
{
     $this->RequestHandler->renderAs($this, 'json');
     $this->response->type('application/json');
     $this->set('_serialize', true);
}

答案 2 :(得分:0)

CakePHP将轻松渲染json。

在你的控制器中,看起来像是什么。

protected   $responseBody   =   [];

public function beforeRender(Event $event){

    foreach($this->responseBody as $responseKey=>$response){

       $this->set($responseKey, $response);
    }
    $this->set('_serialize', array_keys($this->responseBody));
}

public function initialize()
{
    parent::initialize();

    $this->RequestHandler->renderAs($this, 'json');
}

public function index(){

    $this->request->allowMethod(['get']);  // Method like post,get..

    $this->responseBody["statusCode"]       =   200;

    $this->responseBody["statusDescription"]        =   ''; //You send any text in json.

    $this->responseBody["data"]  =  []; // All data that you can send.

}

有关更多信息,您可以查看CakePHP Cookbook REST API以单击here