我的问题很简单: 是否可以在控制器方法返回之前设置http响应代码(如果我返回一个php表,对于json响应)。
我知道可以这样做:
return response()->json($json,HTTP_CODE);
但我想要在控制器中的某处设置代码而不修改最终返回。 或者你知道一种方法来使本机php函数http_response_code工作吗? 因为Laravel在构建Response期间会覆盖它。 可能吗 ?或者你必须在回报中做到这一点?
我想知道是否可以这样做:
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
}
我不希望你回答任何“回复”,只要告诉我是否不可能。
答案 0 :(得分:0)
如果您想要某种标准方式来处理响应代码,最简单的方法是使用包含此内容的基础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();
}
}
和
public function respond($json)
{
return response()->json($json, $this->getResponseStatusCode());
}
所以在你的控制器中你只能用:
调用基本控制器中的方法return $this->respond($json);
答案 1 :(得分:0)
如何使用response()
函数执行以下操作:
public function myMethod(){
$response = response();
//Some code
$response->setStatusCode(400);
return $response->json([]);
}