【问题标题】:Forcing json responses for API not working on laravel 8强制 API 的 json 响应在 laravel 8 上不起作用
【发布时间】:2021-07-22 09:50:53
【问题描述】:

我正在使用 laravel 8 构建一个带有护照身份验证的小型 API,并且还使用 FormRequest 类进行验证请求。

问题是当发生错误时,API 没有响应 JSON,它什么也不返回。

我已经创建了一个新的中间件,通过在 handle 方法上添加这个 $request->headers->set('Accept', 'application/json');,只处理 json 响应,但它似乎不起作用!

有人知道我是否遗漏了什么吗?

【问题讨论】:

标签: php json laravel error-handling laravel-8


【解决方案1】:

响应助手可用于生成其他类型的响应实例。 json 方法会自动将 Content-Type 头设置为 application/json

return response()->json([
    'success' => true,
    'message' => 'Hello world',
]);

我展示了一个应用于验证的示例

public function register(Request $request)
{
    $validator = Validator::make($request->all(), [
        'name' => 'required',
        'email' => 'required|email'
    ]);
   
    if($validator->fails()) {
        return response()->json([
            'success' => false,
            'message' => $validator->errors()
        ], 422);
    }

    # other instructions ...
}

【讨论】:

  • 只是一个评论:验证失败应该返回 422 错误代码而不是 401 这实际上意味着未经身份验证。
猜你喜欢
  • 2018-09-15
  • 2021-03-27
  • 2016-07-21
  • 2021-10-31
  • 1970-01-01
  • 2021-11-13
  • 1970-01-01
  • 1970-01-01
  • 2018-11-15
相关资源
最近更新 更多