gpt4 book ai didi

laravel - 如何在 Laravel 5.4 中生成 API 错误响应?

转载 作者:行者123 更新时间:2023-12-04 15:07:58 26 4
gpt4 key购买 nike

每当我调用/api/v1/posts/1 , 调用被转移到 show方法

public function show(Post $post) {
return $post;
}
PostController.php足智多谋的 Controller 。如果帖子确实存在,则服务器返回 JSON 响应。但是,如果帖子有 不是 存在,服务器返回纯 HTML,尽管请求显然期望返回 JSON。这是 Postman 的演示。
enter image description here
问题是 API 应该返回 application/json ,而不是 text/html .所以,这是我的问题:
1. 如果我们使用隐式路由模型绑定(bind)时发生异常(如上面的 show 方法中,当我们有 404 时),Laravel 是否内置了对自动返回 JSON 的支持?
2. 如果是这样,我该如何启用它? (默认情况下,我得到纯 HTML,而不是 JSON)
如果不是在每个 API Controller 中复制以下内容的替代方法
public function show($id) {
$post = Post::find($id); // findOrFail() won't return JSON, only plain HTML
if (!$post)
return response()->json([ ... ], 404);
return $post;
}
3. app\Exceptions\Handler 中是否有通用方法? ?
4. 标准错误/异常响应包含什么?我用谷歌搜索了这个,但发现了许多自定义变体。
5. 为什么 JSON 响应仍然没有内置到隐式路由模型绑定(bind)中?为什么不简化开发人员的生活并自动处理这种低级问题呢?
编辑
在 Laravel IRC 的人建议我不要理会错误响应之后,我遇到了一个难题,他们认为标准 HTTP 异常默认呈现为 HTML,并且使用 API 的系统应该在不查看正文的情况下处理 404。我希望更多的人加入讨论,不知道你们会如何回应。

最佳答案

  1. Is there a generic approach to use in app\Exceptions\Handler?


您可以检查通用异常处理程序中是否需要 json。
// app/Exceptions/Handler.php
public function render($request, Exception $exception) {
if ($request->expectsJson()) {
return response()->json(["message" => $exception->getMessage()]);
}
return parent::render($request, $exception);
}

关于laravel - 如何在 Laravel 5.4 中生成 API 错误响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43245853/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com