我有一个Laravel 8 API应用程序。下面是我在控制器中的示例测试方法,它返回状态422,并带有无效数据JSON响应。
public function testInvalid()
{
$arrResponse = [
'success' => false,
'message' => 'message',
'data' => [],
'errors' => ['error'],
'error_code' => 422,
];
return response()->json($arrResponse, 422);
}
上面应该返回postman格式的JSON响应:
{
"success": false,
"message": "message",
"data": [],
"errors": [
"error"
],
"error_code": 422
}
但它只在local
机器上工作。
当我在server
上运行相同的代码时,它返回Unprocessable entity
HTML页面。
但是如果我将其更新为具有相同响应格式的200 OK
响应代码,那么它也会从server
返回JSON响应。
return response()->json($arrResponse, 200);
所有其他有效的请求工作正常,并从server
返回JSON响应。
是否需要检查Apache Web服务器配置?
注意:我尝试在postman request中传递Accept: application/json
和Content-Type: application/json
头,还是一样。
1条答案
按热度按时间ibps3vxo1#
这是由于您的请求的
Accept
头。如果没有提供,Laravel默认为
Accept: text/html
,错误处理将为您提供与接受头匹配的响应。通过为
Accept: application/json
提供请求头,Laravel也会以JSON的形式返回错误响应。