Estoy empezando con Laravel 5.2, y necesito hacerme una API restful, el tema es que no consigo registrarme mediante json con el end point creado, a continuación explico los pasos que he seguido para ver si algo he hecho mal (seguro que si jeje).
1 Primero corro el "php artisan make:auth"
2 En routes.php establezco el prefijo de la API y el middleware que se va a usar:
Route::group(['prefix' => 'api/v1', 'middleware' => 'auth:api'], function () {
Route::auth();
Route::get('/home', 'HomeController@index');
});
3 seguidamente miro mis rutas
Código:
| GET|HEAD | / | | Closure | | | | GET|HEAD | api/v1/home | | App\Http\Controllers\HomeController@index | auth:api,auth | | | GET|HEAD | api/v1/login | | App\Http\Controllers\Auth\AuthController@showLoginForm | auth:api,guest | | | POST | api/v1/login | | App\Http\Controllers\Auth\AuthController@login | auth:api,guest | | | GET|HEAD | api/v1/logout | | App\Http\Controllers\Auth\AuthController@logout | auth:api | | | POST | api/v1/password/email | | App\Http\Controllers\Auth\PasswordController@sendResetLinkEmail | auth:api,guest | | | POST | api/v1/password/reset | | App\Http\Controllers\Auth\PasswordController@reset | auth:api,guest | | | GET|HEAD | api/v1/password/reset/{token?} | | App\Http\Controllers\Auth\PasswordController@showResetForm | auth:api,guest | | | GET|HEAD | api/v1/register | | App\Http\Controllers\Auth\AuthController@showRegistrationForm | auth:api,guest | | | POST | api/v1/register | | App\Http\Controllers\Auth\AuthController@register | auth:api,guest | +--------+----------+--------------------------------+------+-----------------------------------------------------------------+---------------
Nota: la verdad que eso de "auth:api,guest" me despista un poco, ¿que significa exactamente¿, usa el guard api o guest?.
4 Cambio en auth.php el default guard a "api".
5 Edito kernel.php
y esto es lo que tengo
Código:
Finalmente abro REST Console , plugin de chrome y pruebo con el end point para registrarse, es decir " api/v1/register ". <?php namespace App\Http; use Illuminate\Foundation\Http\Kernel as HttpKernel; class Kernel extends HttpKernel { protected $middleware = [ \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, ]; /** * The application's route middleware groups. * * @var array */ protected $middlewareGroups = [ 'web' => [ \App\Http\Middleware\EncryptCookies::class, \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, \Illuminate\Session\Middleware\StartSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class, \App\Http\Middleware\VerifyCsrfToken::class, ], 'api' => [ 'throttle:60,1', 'auth:api', ], ]; protected $routeMiddleware = [ 'auth' => \App\Http\Middleware\Authenticate::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, ]; }
Le paso como "RAW Body":
Código:
y en content-Type: application/json{ "username": "pepe", "email" : "[email protected]", "password": "passcool" }
He editado para añadir más información:
He probado cambiando en routes.php esto:
Código:
Es decir he añadido "throttle:60,1" , entiendo que esto sirve para limitar el número de peticiones posible de los recursos, pero sigo con el mismo problema descrito anteriormente.Route::group(['prefix' => 'api', 'middleware' => ['auth:api', 'throttle:60,1']], function () { Route::auth(); Route::get('/home', 'HomeController@index'); });
Siempre recibo un Status Code: 401 , y el mensaje "Unauthorized"
Gracias de antemano.