【问题标题】:Laravel - What should happen when API route doesn't found or match?Laravel - 当 API 路由未找到或匹配时会发生什么?
【发布时间】:2019-04-19 06:07:59
【问题描述】:

我正在使用 Passport 在 Laravel 中创建一个 API,并使用 Postman 来测试 API。我在 Postman 中获得 JSON 格式的输出,所以当我在 Postman 中点击该路线时,即http://localhost:8000/api/login 它工作正常。但是,如果我的 URL 是 http://localhost:8000/api/log,这意味着一个错误的 URL,那么它会在 HTML 中返回一些错误,在这里我想显示一条消息,它可能是“未找到”或 JSON 格式的其他内容。当控制器中未定义方法或动作时如何显示特定消息?

【问题讨论】:

标签: json laravel api


【解决方案1】:

您可以为某些 HTTP 错误方法提供自定义错误页面:

如果您希望自定义 404 HTTP 状态代码的错误页面,请创建一个resources/views/errors/404.blade.php。此文件将针对您的应用程序生成的所有 404 错误提供。

https://laravel.com/docs/5.4/errors#custom-http-error-pages

【讨论】:

    【解决方案2】:

    看看这些讨论 5.5+ 中的后备路由的文章

    https://themsaid.com/laravel-55-better-404-response-20170921

    https://laravel-news.com/404-responses-laravel-api

    如您所见,您可以创建一个后备路由,然后允许您控制响应。

    所以你会想要这样的东西:

    Route::fallback(function(){
        return response()->json(['message' => 'Not Found.'], 404);
    })->name('api.fallback.404');
    

    【讨论】:

    • 感谢您的回答,是的,我将此代码放在我的 api.php 中,它正在工作,但我必须将 postman 中的 HTTP 方法从 post 更改为登录,然后返回“未找到”但后来我无法使用登录功能。
    • 嗨萨西。您需要创建 2 条路线。 1个用于api,另一个用于用户界面。然后,我将使用访问令牌来访问用户可以通过用户界面获取的 api,以将其合并到他们的 api 代码中。此外,如果您遇到未找到的问题,那么您需要为该问题创建路线
    猜你喜欢
    • 2018-12-27
    • 2020-10-26
    • 1970-01-01
    • 1970-01-01
    • 2011-08-26
    • 2019-04-16
    • 2022-01-14
    • 2016-02-27
    相关资源
    最近更新 更多