Php 控制器返回前的Laravel 5.4 http响应代码
我的问题很简单: 是否可以在控制器方法返回之前设置http响应代码(如果我返回一个php表,用于json响应) 我知道有可能做到这一点:Php 控制器返回前的Laravel 5.4 http响应代码,php,laravel,laravel-5.4,Php,Laravel,Laravel 5.4,我的问题很简单: 是否可以在控制器方法返回之前设置http响应代码(如果我返回一个php表,用于json响应) 我知道有可能做到这一点: return response()->json($json,HTTP_CODE); 但是我想在控制器中的某个地方设置代码,而不修改最终返回。 或者您知道一种让本机php函数http_response_代码工作的方法吗? 因为Laravel在构建响应时会覆盖它。 可能吗?或者你必须这样做作为回报 我想知道是否有可能做到这一点: public funct
return response()->json($json,HTTP_CODE);
但是我想在控制器中的某个地方设置代码,而不修改最终返回。
或者您知道一种让本机php函数http_response_代码工作的方法吗?
因为Laravel在构建响应时会覆盖它。
可能吗?或者你必须这样做作为回报
我想知道是否有可能做到这一点:
public function myMethod(){
//Some code
$this->injectHttpCode(400); //or how to use native native http_response_code(400); ?
//Some code
return $this->json; //I dont want to modify that
}
我不想在你的回答中有任何“返回”,如果不可能,请告诉我。如果你想有某种标准方法来处理响应代码,最简单的方法是有一个包含以下内容的base
BaseController
:
protected function getResponseStatusCode() : int
{
switch (request()->getMethod()) {
case 'GET':
case 'PUT':
return 200;
case 'POST':
return 201;
case 'DELETE':
return 204;
default:
return request()->getMethod();
}
}
以及:
因此,在控制器中,您只能使用以下命令调用基本控制器中的方法:
return $this->respond($json);
使用
response()
函数执行以下操作如何:
public function myMethod(){
$response = response();
//Some code
$response->setStatusCode(400);
return $response->json([]);
}
我知道,请阅读我的问题“但是我想在不修改最终返回的情况下在控制器中的某个地方设置代码”。我已经用我想做的示例编辑了我的问题。您是否尝试过创建自定义中间件?
public function myMethod(){
$response = response();
//Some code
$response->setStatusCode(400);
return $response->json([]);
}