【问题标题】:Force JSON format using CakePHP 3 and Crud plugin使用 CakePHP 3 和 Crud 插件强制 JSON 格式
【发布时间】:2016-01-03 08:43:22
【问题描述】:

我已按照How to build a CakePHP 3 REST API 教程创建 REST API。教程描述了使用扩展 (json/xml) 发出请求以设置响应格式的情况。使用插件CRUD for CakePHP

我想强制 JSON 响应格式不使用 .json 扩展名。我的请求收到 MissingRouteException。

我尝试了什么

Router::prefix('api', function ($routes) {
    //$routes->extensions(['json', 'xml']);
    $routes->resources('Cocktails');
});

#1

$this->RequestHandler->ext = 'json' 进入 AppController::beforeFilter()

#2

$this->RequestHandler->renderAs($this, 'json'); 进入 AppController::beforeFilter()

但这是尝试使用来自Template/Api/Coctails/json的模板

我希望它的行为与扩展的情况完全相同。

谢谢

【问题讨论】:

标签: cakephp crud cakephp-3.0


【解决方案1】:

使用a proper HTTP accept headerAccept: application/json 请求您的数据,然后RequestHandler 应该接收它。

HTTP 客户端使用 Accept 标头告诉服务器什么 他们会接受的内容类型。然后服务器会发回一个 响应,其中将包含一个 Content-Type 标头,告诉客户端 返回内容的实际内容类型是什么。

但是,您可能已经注意到,HTTP 请求也可以包含 内容类型标头。为什么?好吧,考虑一下 POST 或 PUT 请求。 使用这些请求类型,客户端实际上是在发送一堆 作为请求的一部分向服务器发送数据,以及 Content-Type 标头 告诉服务器数据实际上是什么(从而确定如何 服务器会解析它)。

特别是对于由 HTML 表单产生的典型 POST 请求 提交时,请求的 Content-Type 通常是 application/x-www-form-urlencoded 或 multipart/form-data。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-10
    相关资源
    最近更新 更多