首页 > 解决方案 > Laravel Nova 和 Dingo API 路由冲突

问题描述

我有一个 Laravel API 服务器,它只有一个网络路由(测试页面),其他一切都通过dingo/api包控制,一切正常。

config/api.php我设置'prefix' => env('API_PREFIX', '/')为它只是一个 API 服务器。

从那以后,我安装了 Laravel Nova 并在/nova路由上不断收到 JSON 错误消息:No hint path defined for [nova].

我最终发现我需要将前缀更改为'prefix' => env('API_PREFIX', '/api'). 现在 Nova 工作正常,但我的 API 路由被破坏了。

在 Postman 中,当我执行 GET /test(prefix /) 时,Nova 不起作用,当我执行/api/test/(prefix /api) 时,Nova 确实起作用,但我在 API 返回时收到错误:

{
    "message": "",
    "exception": "Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException",
    "file": "/home/vagrant/Code/guest-api/vendor/laravel/framework/src/Illuminate/Routing/RouteCollection.php",
    "line": 179,
    "trace": [
        {
            "file": "/home/vagrant/Code/guest-api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 633,
            "function": "match",
            "class": "Illuminate\\Routing\\RouteCollection",
            "type": "->"
        },
        {
            "file": "/home/vagrant/Code/guest-api/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 622,
            "function": "findRoute",
            "class": "Illuminate\\Routing\\Router",
            "type": "->"
        },
        ...
    ]
}

没有错误消息,我看不出有什么问题?另外,当我这样做时,php artisan api:routes我会得到正确的路线:

+------+----------+-----------------+------+-----------------------------------------------+-----------+------------+----------+------------+
| Host | Method   | URI             | Name | Action                                        | Protected | Version(s) | Scope(s) | Rate Limit |
+------+----------+-----------------+------+-----------------------------------------------+-----------+------------+----------+------------+
|      | GET|HEAD | /something/test |      | App\Http\Controllers\Auth\AuthController@test | No        | v1         |          |            |
+------+----------+-----------------+------+-----------------------------------------------+-----------+------------+----------+------------+

标签: phpjsonlaraveldingo-apilaravel-nova

解决方案


而不是添加/api作为后备参数,您应该将前缀添加到您的.env文件中,例如:如此API_PREFIX=api所述


推荐阅读