I have just installed an Laravel + Breeze (api) application. I prepared an POSTMAN collection with some Request to make Login, Logout, Register, etc.. Looks working fine.
Now, When I am logged in, I want get user session info, but I get a message telling me that I have to use POST method. This is my api.php (routes file):
Route::middleware(['auth:sanctum'])->get('/user', function (Request $request) {
return $request->user();
})->name("sanctum.user");
I get this error when I access to http://127.0.0.1:8000/api/user (using GET, as configured in previous code file):
Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException: The GET method is not supported for route login. Supported methods: POST. in file C:\Users\juanj\PhpstormProjects\best_switch_prices_api\vendor\laravel\framework\src\Illuminate\Routing\AbstractRouteCollection.php on line 122
#0 C:\Users\juanj\PhpstormProjects\best_switch_prices_api\vendor\laravel\framework\src\Illuminate\Routing\AbstractRouteCollection.php(107): Illuminate\Routing\AbstractRouteCollection->requestMethodNotAllowed(Object(Illuminate\Http\Request), Array, 'GET')
#1 C:\Users\juanj\PhpstormProjects\best_switch_prices_api\vendor\laravel\framework\src\Illuminate\Routing\AbstractRouteCollection.php(41): Illuminate\Routing\AbstractRouteCollection->getRouteForMethods(Object(Illuminate\Http\Request), Array)
#2 C:\Users\juanj\PhpstormProjects\best_switch_prices_api\vendor\laravel\framework\src\Illuminate\Routing\RouteCollection.php(162): Illuminate\Routing\AbstractRouteCollection->handleMatchedRoute(Object(Illuminate\Http\Request), NULL)
#3 C:\Users\juanj\PhpstormProjects\best_switch_prices_api\vendor\laravel\framework\src\Illuminate\Routing\Router.php(761): Illuminate\Routing\RouteCollection->match(Object(Illuminate\Http\Request))
#4 C:\Users\juanj\PhpstormProjects\best_switch_prices_api\vendor\laravel\framework\src\Illuminate\Routing\Router.php(748): Illuminate\Routing\Router->findRoute(Object(Illuminate\Http\Request))
#5 C:\Users\juanj\PhpstormProjects\best_switch_prices_api\vendor\laravel\framework\src\Illuminate\Routing\Router.php(737): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request))
#6 C:\Users\juanj\PhpstormProjects\best_switch_prices_api\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php(200): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request))
#7 C:\Users\juanj\PhpstormProjects\best_switch_prices_api\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(144): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}(Object(Illuminate\Http\Request))
#8 C:\Users\juanj\PhpstormProjects\best_switch_prices_api\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#9 C:\Users\juanj\PhpstormProjects\best_switch_prices_api\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull.php(31): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure))
#10 C:\Users\juanj\PhpstormProjects\best_switch_prices_api\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(183): Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull->handle(Object(Illuminate\Http\Request), Object(Closure))
#11 C:\Users\juanj\PhpstormProjects\best_switch_prices_api\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#12 C:\Users\juanj\PhpstormProjects\best_switch_prices_api\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\TrimStrings.php(40): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure))
#13 C:\Users\juanj\PhpstormProjects\best_switch_prices_api\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(183): Illuminate\Foundation\Http\Middleware\TrimStrings->handle(Object(Illuminate\Http\Request), Object(Closure))
#14 C:\Users\juanj\PhpstormProjects\best_switch_prices_api\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\ValidatePostSize.php(27): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#15 C:\Users\juanj\PhpstormProjects\best_switch_prices_api\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(183): Illuminate\Foundation\Http\Middleware\ValidatePostSize->handle(Object(Illuminate\Http\Request), Object(Closure))
#16 C:\Users\juanj\PhpstormProjects\best_switch_prices_api\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance.php(99): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#17 C:\Users\juanj\PhpstormProjects\best_switch_prices_api\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(183): Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance->handle(Object(Illuminate\Http\Request), Object(Closure))
#18 C:\Users\juanj\PhpstormProjects\best_switch_prices_api\vendor\laravel\framework\src\Illuminate\Http\Middleware\HandleCors.php(62): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#19 C:\Users\juanj\PhpstormProjects\best_switch_prices_api\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(183): Illuminate\Http\Middleware\HandleCors->handle(Object(Illuminate\Http\Request), Object(Closure))
#20 C:\Users\juanj\PhpstormProjects\best_switch_prices_api\vendor\laravel\framework\src\Illuminate\Http\Middleware\TrustProxies.php(39): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#21 C:\Users\juanj\PhpstormProjects\best_switch_prices_api\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(183): Illuminate\Http\Middleware\TrustProxies->handle(Object(Illuminate\Http\Request), Object(Closure))
#22 C:\Users\juanj\PhpstormProjects\best_switch_prices_api\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(119): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#23 C:\Users\juanj\PhpstormProjects\best_switch_prices_api\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php(175): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#24 C:\Users\juanj\PhpstormProjects\best_switch_prices_api\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php(144): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request))
#25 C:\Users\juanj\PhpstormProjects\best_switch_prices_api\public\index.php(51): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request))
#26 C:\Users\juanj\PhpstormProjects\best_switch_prices_api\vendor\laravel\framework\src\Illuminate\Foundation\resources\server.php(16): require_once('C:\\Users\\juanj\\...')
#27 {main}
It's weird, because if I use POST instead GET. I get a similar error telling me that I should use GET or HEAD http method.:
Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException: The POST method is not supported for route api/user. Supported methods: GET, HEAD. in file C:\Users\juanj\PhpstormProjects\best_switch_prices_api\vendor\laravel\framework\src\Illuminate\Routing\AbstractRouteCollection.php on line 122
I make always a request call to /sanctum/csrf-cookie to create a header X-XSRF-TOKEN before these request calls. Maybe this an special endpoint, but the other one in api.php from the first code is not working too. In the server log I only can view this:
2024-02-12 22:33:52 ............................................................................................................................................ ~ 0s
2024-02-12 22:38:36 ............................................................................................................................................ ~ 1s
2024-02-12 22:40:16 ............................................................................................................................................ ~ 0s
2024-02-12 22:41:42 ............................................................................................................................................ ~ 1s
2024-02-12 22:41:43 ............................................................................................................................................ ~ 0s
I want know how to make request to /api/user from a postman request to my Laravel+Breeze(api) fresh installed application.
Thanks in advance.
I wasn't login correctly and the response was redirecting me to /login using GET (the http method of my tested endpoint).
I added next header to my request and made all more clear: "Accept":"application/json"
Now my request response is JSON instead HTML and tell me this message:
Thanks to all for make me found the solution.