Laravel 中的 API 路由返回 404

发布于 2025-01-09 11:17:22 字数 801 浏览 4 评论 0原文

我在 laravel 中安装了 https://tenancyforlaravel.com/ 以实现多租户,并且它在网络上运行良好路线。

我的问题是,当我访问 API 时,我在租户域中收到 404 错误。

tenancyforlaravel 文档: https://tenancyforlaravel.com/docs/v3/routes< /a>

它说我必须将所有 API 放入 api.php 文件中,并使用此中间件将它们包装在 Route 组中,因此我将所有 API 放入其中api.php 文件和我的所有 API 如下:

Route::middleware('tenancy')->group(function () {
    Route::name('api.')->namespace('Api')->group(function () {
        Route::post('/login', 'AuthController@login')->name('login');
        ...
});

当我使用 sub.local.test/api/login 访问它时,我收到 404 错误。

I have https://tenancyforlaravel.com/ installed in laravel to make multi-tenant and it works fine for the web routes.

My problem is that when I access my APIs then I get a 404 error in tenant domains.

tenancyforlaravel documentation: https://tenancyforlaravel.com/docs/v3/routes

It says that I must put all my APIs inside api.php file and wrap them in a Route group with this middleware so I put all my APIs inside api.php file and all my APIs as below:

Route::middleware('tenancy')->group(function () {
    Route::name('api.')->namespace('Api')->group(function () {
        Route::post('/login', 'AuthController@login')->name('login');
        ...
});

and when I access it using sub.local.test/api/login then I get 404 error.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

旧人哭 2025-01-16 11:17:22

已针对 tenancyforlaravel.com V3 进行测试,运行正常。

Route::middleware([
    InitializeTenancyByDomain::class,
    PreventAccessFromCentralDomains::class
    ])->prefix('api')->group(function () {
    //
    Route::name('api.')->namespace('App\Http\Controllers\Api')->group(function () {
        Route::post('/login', 'AuthController@login')->name('login');
        ...
});

Tested for tenancyforlaravel.com V3 and it works OK.

Route::middleware([
    InitializeTenancyByDomain::class,
    PreventAccessFromCentralDomains::class
    ])->prefix('api')->group(function () {
    //
    Route::name('api.')->namespace('App\Http\Controllers\Api')->group(function () {
        Route::post('/login', 'AuthController@login')->name('login');
        ...
});

最笨的告白 2025-01-16 11:17:22

将所有 API 路由放入 api.php 中,如下所示

use App\Http\Controllers\AuthController;

Route::group(['prefix' => '/{tenant}',
'middleware' => [InitializeTenancyByPath::class],], 
function () {
    Route::post('/login', [AuthController::class, 'login'])->name('login');
    ...
});

由于您没有提及租户标识符,我使用 path 作为标识符,因此使用 InitializeTenancyByPath 中间件。使用您想要的任何标识符中间件来代替它。

像以前一样使用您的标识符正常访问您的 API 路由。由于此示例使用 path 作为标识符,因此端点将如下所示:

sub.local.test/api/{tenant}/login

Put all your API routes inside api.php as below

use App\Http\Controllers\AuthController;

Route::group(['prefix' => '/{tenant}',
'middleware' => [InitializeTenancyByPath::class],], 
function () {
    Route::post('/login', [AuthController::class, 'login'])->name('login');
    ...
});

As you haven't mentioned your tenant identifier, I am using path as identifier, so using InitializeTenancyByPath middleware. Use whatever identifier middleware you want in place of that.

Access your API routes normally as you used to do, with your identifier. As this example uses path as identifier, the endpoint will look like:

sub.local.test/api/{tenant}/login
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文