Laravel api 尝试从控制器调用方法时出现 404

Laravel api 404 when try to call method from controller

我在服务器上部署了 Laravel 中的应用程序。当我尝试在 Postman 中调用 POST 时:

http://api.mydomain.com/api/auth/signin

我收到错误 404 not found

在文件 RouteServiceProvider 中,我评论了网络部分:

public function boot()
    {
        $this->configureRateLimiting();

        $this->routes(function () {
            Route::prefix('api')
                ->middleware('api')
                ->namespace($this->namespace)
                ->group(base_path('routes/api.php'));
            /*
            Route::middleware('web')
                ->namespace($this->namespace)
                ->group(base_path('routes/web.php'));
            */
        });
    }

当我有未注释的 web 部分并从 Postman 发送 GET 但没有任何后缀时,只有域:api.mydomain.com/ 它有效。 现在我评论了 web 并且只有 API 部分并且对 API 方法的任何请求都不起作用。 我的控制器:

class JwtAuthController extends Controller
{
    //
    public function __construct() {
        $this->middleware('auth:api', ['except' => ['login', 'register']]);
    }

    /**
     * Get a JWT via given credentials.
    */
    public function login(Request $request){
...
}

api.php 文件中:

Route::group([
    'middleware' => 'api',
    'prefix' => 'auth'
], function ($router) {
    Route::post('/signin', [JwtAuthController::class, 'login']);
}

php artisan route:list的结果:

| App\Http\Middleware\Authenticate:api |
|        
| POST     
| api/auth/signin                                                             
| generated::1YOyMAVvTTnBZtym 
| App\Http\Controllers\JwtAuthController@login                        
| api  

                            

在我的本地机器上,它可以工作,但是当我将它部署到服务器上时,它就不能工作了。

未找到,因为您没有添加子域api,修复它

您可以从 url 中删除 api.,就像这样 http://exmaple.com/api/auth/signin

您可以将子域添加到 RouteServiceProvider

那样

 Route::middleware('api')
    ->prefix('api')
    ->domain('api.exmaple.com') // <-
    ->namespace($this->namespace)
    ->group(base_path('routes/api.php'));