apache Laravel response()->JSON在验证错误的情况下返回服务器上的HTML页面

bjg7j2ky  于 2023-04-21  发布在  Apache
关注(0)|答案(1)|浏览(94)

我有一个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/jsonContent-Type: application/json头,还是一样。

ibps3vxo

ibps3vxo1#

这是由于您的请求的Accept头。
如果没有提供,Laravel默认为Accept: text/html,错误处理将为您提供与接受头匹配的响应。
通过为Accept: application/json提供请求头,Laravel也会以JSON的形式返回错误响应。

相关问题