Laravel Nova 和 Dingo API 之间的路由冲突
Conflict in routing between Laravel Nova and 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
(前缀 /
)时有效,但 Nova 无效,当我执行 /api/test/
(前缀 /api
)时, Nova 确实有效,但我在 API return 上收到错误消息:
{
"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 | | |
+------+----------+-----------------+------+-----------------------------------------------+-----------+------------+----------+------------+
而不是将 /api
添加为后备参数,您应该将前缀添加到 .env
文件,如:API_PREFIX=api
描述 here
我有一台 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
(前缀 /
)时有效,但 Nova 无效,当我执行 /api/test/
(前缀 /api
)时, Nova 确实有效,但我在 API return 上收到错误消息:
{
"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 | | |
+------+----------+-----------------+------+-----------------------------------------------+-----------+------------+----------+------------+
而不是将 /api
添加为后备参数,您应该将前缀添加到 .env
文件,如:API_PREFIX=api
描述 here