1

使用 Laravel 5.4,我想发送 json 响应,虽然在 api.php 中没有找到路由,但我如何在 api.php 中存档并且没有 Controller 和 Model 类。

short : 路由名称错误如何处理?

试过fallback

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

以上错误:

Attribute [fallback] does not exist.

请帮助我,当不正确的路由名称请求时如何处理 Route not found 异常。

4

2 回答 2

1

从 5.6 版开始提供回退。尝试 Route::any()


@NobbyNobbs - trim() 期望参数 1 是字符串,给定对象

在您的 api.php 末尾添加(在所有其他路线下方)类似

Route::any('{path}', function() {
    return response()->json([
        'message' => 'Route not found'
    ], 404);
})->where('path', '.*');

我如何在 api.php 中存档并且没有 Controller 和 Model 类

在我看来,使用匿名函数作为路由处理程序并不是一个好主意,因为如果你使用闭包,你就不能缓存你的路由,这会导致一些开销。

于 2018-08-04T14:44:11.403 回答
0

您可以通过在您的 app/Exceptions/ Handler.php文件中处理它来使其全局化。

Laravel v7

您可以在下面添加此代码:

public function render($request, Throwable $exception)
    {
        if ($request->expectsJson()){

            if ($exception instanceof ModelNotFoundException){
                return response([
                    'errors'=> 'Object Not Found'
                ], 404);
            }

            if ($exception instanceof NotFoundHttpException){
                return response([
                    'errors'=> 'Route Not Found'
                ], 404);
            }
          
        }

        return parent::render($request, $exception);
        
    }
于 2021-08-29T13:33:30.950 回答