Cómo usar las rutas API en Laravel 5.3

93

En Laravel 5.3, las rutas de la API se movieron al archivo api.php. Pero, ¿cómo puedo llamar a una ruta en el archivo api.php? Intenté crear una ruta como esta:

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

Probé las siguientes URL pero ambas devolvieron la excepción NotFoundHttpException:

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

¿Cómo puedo llamar a esta ruta API?

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

Respuestas:

173

Lo llamas por

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

Si miras dentro app/Providers/RouteServiceProvider.php, verás que, de forma predeterminada, establece el apiprefijo para las rutas API, que puedes cambiar, por supuesto, si lo deseas.

protected function mapApiRoutes()
{
    Route::group([
        'middleware' => 'api',
        'namespace' => $this->namespace,
        'prefix' => 'api',
    ], function ($router) {
        require base_path('routes/api.php');
    });
}
peterm
fuente
¿Alguna idea de cómo llamar a eso en laravel 5.4? La ruta de la API predeterminada: Route::middleware('auth:api')->get('/user', function (Request $request) { return $request->user(); }); intenté localhost / app / api / user pero no funcionó
utdev
@utdev Usas exactamente lo mismo. Elimina appsegmento de tu URI. Debe verse en la línea delocalhost/api/user
peterm
1

rutas / api.php

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

La asignación se define en el proveedor de servicios 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
fuente