我已按照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
我希望它的行为与扩展名一样。
由于
答案 0 :(得分:0)
使用a proper HTTP accept header Accept: application/json
请求您的数据,RequestHandler应该接收它。
HTTP客户端使用Accept标头告诉服务器什么 他们接受的内容类型。然后服务器将发回一个 响应,其中包含一个告诉客户端的Content-Type标头 返回内容的内容类型实际上是什么。
但是,您可能已经注意到,HTTP请求也可以包含 内容类型标头。为什么?好吧,想想POST或PUT请求。 使用这些请求类型,客户端实际上发送了一堆 作为请求的一部分的数据到服务器,以及Content-Type标头 告诉服务器数据实际是什么(并因此确定如何 服务器将解析它。)
特别是对于HTML表单产生的典型POST请求 提交时,请求的Content-Type通常是 application / x-www-form-urlencoded或multipart / form-data。