【问题标题】:Laravel api 404 when try to call method from controller尝试从控制器调用方法时 Laravel api 404
【发布时间】:2021-12-06 18:04:12
【问题描述】:

我在服务器上部署了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'));
            */
        });
    }

当我有未注释的网络部分并从 Postman 发送 GET但没有任何后缀时,只有 domain: 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  

                            

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

【问题讨论】:

    标签: laravel routes


    【解决方案1】:

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

    你可以从网址中删除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'));
    
    

    【讨论】:

    • 当我在 Postman 中尝试使用这个 url:http://api.mydomaincom/auth/signin 我得到 404,我添加了 -&gt;domain('api.mydomain.com') 并且仍然是同样的错误
    • @Mark 你清除配置了吗?,你必须从RouteServiceProvider btw 中删除-&gt;prefix('api')
    猜你喜欢
    • 2017-07-14
    • 1970-01-01
    • 2023-04-02
    • 2010-10-02
    • 1970-01-01
    • 1970-01-01
    • 2021-02-28
    • 1970-01-01
    • 2019-03-09
    相关资源
    最近更新 更多