Como usar Rotas de API no Laravel 5.3

93

No Laravel 5.3 API as rotas foram movidas para o arquivo api.php. Mas como posso chamar uma rota no arquivo api.php? Tentei criar uma rota assim:

Route::get('/test',function(){
     return "ok"; 
});

Tentei os seguintes URLs, mas ambos retornaram a exceção NotFoundHttpException:

  • http://localhost:8080/test/public/test
  • http://localhost:8080/test/public/api/test

Como posso chamar essa rota de API?

gw0
fonte
Está funcionando: localhost / myproject / public / api / test
Muhammad Shahzad

Respostas:

173

Você chama por

http://localhost:8080/api/test
                      ^^^

Se você olhar para dentro, app/Providers/RouteServiceProvider.phpverá que, por padrão, ele define o apiprefixo para rotas de API, que você pode alterar, se quiser.

protected function mapApiRoutes()
{
    Route::group([
        'middleware' => 'api',
        'namespace' => $this->namespace,
        'prefix' => 'api',
    ], function ($router) {
        require base_path('routes/api.php');
    });
}
peterm
fonte
Alguma ideia de como chamar isso em laravel 5.4? A rota api padrão: Route::middleware('auth:api')->get('/user', function (Request $request) { return $request->user(); }); tentei localhost / app / api / user, mas não funcionou
utdev
@utdev Você usa exatamente o mesmo. Remova o appsegmento do seu URI. Deve ser localhost/api/user
semelhante a
1

routes / api.php

Route::get('/test', function () {
    return response('Test API', 200)
                  ->header('Content-Type', 'application/json');
});

O mapeamento é definido no provedor de serviços App \ Providers \ RouteServiceProvider

protected function mapApiRoutes(){
    Route::group([
        'middleware' => ['api', 'auth:api'],
        'namespace' => $this->namespace,
        'prefix' => 'api',
    ], function ($router) {
        require base_path('routes/api.php');
    });
}
Chandrakant Ganji
fonte