SlideShare una empresa de Scribd logo
1 de 34
APIREST PHP - LARAVEL
ORM de Eloquent y JWT
Herramientas Necesarias
XAMPP SERVER(PHP >7.4)
Composer
Laravel
Visual Studio Code
Plugin Visual Studio Code
Instalar Laravel
 Una vez instalado el Composer en Windows, se debe abrir una consola de símbolo de sistema
y ejecutar:
composer global require laravel/installer
 Se debe crear un directorio y ubicarse donde se desee crear el proyecto de laravel,
ejecutando el siguiente comando:
 laravel new ICOSALUDAPI
Configurar la conexión a la Base de
Datos
 Debemos abrir el proyecto con el editor de código de su preferencia, en esta ocasión
utilizaremos visual studio code, para editar el archivo .env donde se podrá configurar la
conexión a la base de datos, para usar el driver de postgresql, debe digitar pgsql en
DB_CONNECTION:
Instalar Liberia para JWT
 Abrimos una consola de comandos desde el VSCODE o en el símbolo del sistema y
ejecutamos:
composer require tymon/jwt-auth
 Una vez termine la instalación se debe ejecutar la siguiente línea para publicar la
configuración:
php artisan vendor:publish --provider="TymonJWTAuthProvidersLaravelServiceProvider"
 Debemos agregar la siguiente línea en el archivo app.php ubicado en el directorio config:
TymonJWTAuthProvidersLaravelServiceProvider::class,
Configurar JWT
 Debemos ejecutar en la terminal de comandos o el CMD lo siguiente para agregar al
archivo .env la clave secreta con la que se va firmar JWT.
php artisan jwt:secret
 Luego agregamos en el archivo Auth.php que se encuentra en la carpeta config la los
parametros para agregar la capa de seguridad a la API y seleccionar el driver JWT:
Configurar JWT
 Se debe realizar las siguientes modificaciones al modelo users.php
1. Importar la librería: Use TymonJWTAuthContractsJWTSubject
2. Implementar la interface: implements JWTSubject
3. Agregar estos métodos: public function getJWTIdentifier() {
return $this->getKey();
}
/** Return a key value array, containing any custom
claims to be added to the JWT.
*
* @return array
*/
public function getJWTCustomClaims() {
return [];
}
Configurar Rutas para Autenticacion
 Una vez configurado esto vamos a agregar las rutas en directorio routes archivo api.php
Route::group([
'middleware' => 'api',
'prefix' => 'auth'
], function ($router) {
Route::post('signup', [AuthController::class, 'signup']);
Route::post('login', [AuthController::class, 'login']);
Route::post('logout', [AuthController::class, 'logout']);
//Route::post('login', 'AuthController@login');
//Route::post('logout', 'AuthController@logout');
Route::post('refresh', 'AuthController@refresh');
Route::post('me', 'AuthController@me');
});
Crear el AuthController
 Se debe crear el controlador encargado del registro y autenticación de los usuario:
php artisan make:controller AuthController
Una vez creado el controlador se debe importar las siguiente Librerias:
use IlluminateSupportFacadesAuth;
use IlluminateHttpRequest;
use IlluminateSupportFacadesValidator;
use AppModelsUser;
Crear el AuthController
 Se debe crear el constructor para configurar las excepciones de seguridad:.
 Procedemos a crear el método login()
public function __construct()
{
$this->middleware('auth:api', ['except' => ['login', 'signup']]);
}
public function login()
{
$credentials = request(['email', 'password']);
if (! $token = auth()->attempt($credentials)) {
return response()->json(['error' => 'Unauthorized'], 401);
}
return $this->respondWithToken($token);
}
Crear el AuthController
 Se debe crear también una función para retornar el usuario autenticado:
 Luego a creamos el método logout()
public function me()
{
return response()->json(auth()->user());
}
public function logout()
{
auth()->logout();
return response()->json(['message' => 'Successfully logged out']);
}
Crear el AuthController
 Luego se crea agrega la función refresh, para mantener la sesión actualizando el token:
 Creamos la función que nos regresa el token esta debe estar protegida:
public function refresh()
{
return $this->respondWithToken(auth()->refresh());
}
protected function respondWithToken($token)
{
return response()->json([
'access_token' => $token,
'token_type' => 'bearer',
'expires_in' => auth()->factory()->getTTL() * 60
]);
}
Crear el AuthController
public function signup(Request $request)
{ $validator = Validator::make($request->all(), [
'name' => 'required',
'email' => 'required|string|email|max:100|unique:users',
'password' => 'required|string|min:6',
]);
if($validator->fails()){
return response()->json($validator->errors()->toJson(),400);
}
$user = User::create(array_merge(
$validator->validate(),
['password' => bcrypt($request->password)]
));
return response()->json([
'message' => '¡Usuario registrado exitosamente!',
'user' => $user], 201);}
• Finalmente agregamos la función registrar usuarios:
Crear Modelos a partir de la Base de
Datos
 Si tenemos una base de datos estructurada y configurada, podemos instalar la siguiente librería para
crear los modelos:
composer require reliese/laravel
 Se debe publicar la configuración:
php artisan vendor:publish --tag=reliese-models
 Luego ejecutamos el siguiente comando para crear el modelo desde la base de datos(especificando el
nombre de la tabla en --table:
php artisan code:models --table=cita
Fuente: https://github.com/reliese/laravel
Modelo Cita
Creamos el Controlador de Cita
Se ejecuta el comando:
php artisan make:controller CitaController
Creamos el Controlador de Cita
Se ejecuta el comando:
php artisan make:controller CitaController
Agregamos el método index, para mostrar todo:
Creamos el Controlador de Cita
Agregamos el método store, para guardar:
Creamos el Controlador de Cita
Agregamos el método showCitasTercero, para mostrar por tercero:
Creamos el Controlador de Cita
Agregamos el método update, para actualizar los datos de la cita:
Creamos el Controlador de Cita
Agregamos el método destroy, para actualizar los datos de la cita:
Configuramos las Rutas para las Citas
Agregamos en el archivo api.php ubicado en directorio de routes:
Ejecutamos el comando:
php artisan route:list
Consultar Rutas:
POSTMAN
Probamos las diferentes rutas
Probamos el API:
Agregamos la Capa de Seguridad
• Vamos nuevamente a las rutas y movemos todo lo que necesite autenticación
dentro del siguiente código:
Route::group(['middleware' => [‘api']], function() {
//Todo lo que este dentro de este grupo requiere
verificación de usuario.
}
TRAIT PHP - LARAVEL
USO DE TRAITS FILTROS Y RESPUESTA GENERAL
TRAIT
• Los traits son un mecanismo de reutilización de código en
leguajes que tienen herencia simple, como PHP. El objetivo de los traits es
reducir las limitaciones de la herencia simple permitiendo reutilizar métodos
en varias clases independientes y de distintas jerarquías.
• Esto es un concepto netamente de diseño, por lo cual para su aplicación
debemos crear el directorio o la carpeta llamada Traits, donde vamos
almacenar todas las clases que vamos a usar como Trait en las diferentes
clases de nuestro proyecto, normalmente para las API se puede utilizar el
trait de manera publica para todos los controladores declarando su uso en el
controlador principal.
Crear el Trait
• Se debe crear el directorio Traits y luego crear un nuevo archivo, por ejemplo
ApiResponser.php, luego declarar el encabezado <?php el namespace y se
inicializa con la palabra clae trait seguido del nombre que deseamos ponerle:
Declarar Funciones y Procedimientos
del TRAIT
• Podemos declarar diferentes funciones dentro del trait las cuales vamos a utilizar
como una especie de funciones publicar en cualquier controlador si declaramos
que se usara el trait en el controlador base.
Use ApiResponser
Filtros
• Dentro de nuestro trait principal podemos declarar funciones dinámicas que
permitan el filtrado de datos de nuestra API, modificando la funciones mediante
la cual se muestran todos los datos y aplicándoles las diferentes funciones
necesarias:
FilterData
GRACIAS
Marlon Alberto Galvis

Más contenido relacionado

Similar a APIREST LARAVEL Y PHP.pptx

William fabricio manual de sistemas sas
William fabricio manual de sistemas sasWilliam fabricio manual de sistemas sas
William fabricio manual de sistemas sasRafael Toro
 
Desarrollo de Apps Web en Ruby on Rails
Desarrollo de Apps Web en Ruby on RailsDesarrollo de Apps Web en Ruby on Rails
Desarrollo de Apps Web en Ruby on RailsFreelancer
 
Taller desarrollando sitios web multiplataforma
Taller desarrollando sitios web multiplataformaTaller desarrollando sitios web multiplataforma
Taller desarrollando sitios web multiplataformaLuis Beltran
 
Tallerprogramacion
TallerprogramacionTallerprogramacion
Tallerprogramacionjohanadoria
 
Presentacion
PresentacionPresentacion
PresentacionEl Jota
 
Php Bitter Sweet Symfony!
Php Bitter Sweet Symfony!Php Bitter Sweet Symfony!
Php Bitter Sweet Symfony!Ricard Luquero
 
Presentacion sobre cassandra
Presentacion sobre cassandraPresentacion sobre cassandra
Presentacion sobre cassandrajesusnoseq
 
Web 2.0 ajax con SharePoint
Web 2.0 ajax con SharePointWeb 2.0 ajax con SharePoint
Web 2.0 ajax con SharePointgoreorti
 
Aprendiendo AWS Lambda con API Gateway y DynamoDB
Aprendiendo AWS Lambda con API Gateway y DynamoDBAprendiendo AWS Lambda con API Gateway y DynamoDB
Aprendiendo AWS Lambda con API Gateway y DynamoDBAbimael Desales López
 
Endpoints Seguros en nuestra Rest-API
Endpoints Seguros en nuestra Rest-APIEndpoints Seguros en nuestra Rest-API
Endpoints Seguros en nuestra Rest-APIEric Zeidan
 
Clase 5 controller
Clase 5 controllerClase 5 controller
Clase 5 controllerhydras_cs
 
la mejor forma de Conectar c# con mysql con archivos de configuracion
 la mejor forma de Conectar c# con mysql con archivos de configuracion  la mejor forma de Conectar c# con mysql con archivos de configuracion
la mejor forma de Conectar c# con mysql con archivos de configuracion juandavid1118
 

Similar a APIREST LARAVEL Y PHP.pptx (20)

William fabricio manual de sistemas sas
William fabricio manual de sistemas sasWilliam fabricio manual de sistemas sas
William fabricio manual de sistemas sas
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Desarrollo de Apps Web en Ruby on Rails
Desarrollo de Apps Web en Ruby on RailsDesarrollo de Apps Web en Ruby on Rails
Desarrollo de Apps Web en Ruby on Rails
 
Taller desarrollando sitios web multiplataforma
Taller desarrollando sitios web multiplataformaTaller desarrollando sitios web multiplataforma
Taller desarrollando sitios web multiplataforma
 
Tallerprogramacion
TallerprogramacionTallerprogramacion
Tallerprogramacion
 
Presentacion
PresentacionPresentacion
Presentacion
 
Php Bitter Sweet Symfony!
Php Bitter Sweet Symfony!Php Bitter Sweet Symfony!
Php Bitter Sweet Symfony!
 
Guia herramientas de bd
Guia herramientas de bdGuia herramientas de bd
Guia herramientas de bd
 
Presentacion sobre cassandra
Presentacion sobre cassandraPresentacion sobre cassandra
Presentacion sobre cassandra
 
Web 2.0 ajax con SharePoint
Web 2.0 ajax con SharePointWeb 2.0 ajax con SharePoint
Web 2.0 ajax con SharePoint
 
Aprendiendo AWS Lambda con API Gateway y DynamoDB
Aprendiendo AWS Lambda con API Gateway y DynamoDBAprendiendo AWS Lambda con API Gateway y DynamoDB
Aprendiendo AWS Lambda con API Gateway y DynamoDB
 
Sesion n°6
Sesion n°6Sesion n°6
Sesion n°6
 
Laravel 5.1
Laravel 5.1Laravel 5.1
Laravel 5.1
 
Endpoints Seguros en nuestra Rest-API
Endpoints Seguros en nuestra Rest-APIEndpoints Seguros en nuestra Rest-API
Endpoints Seguros en nuestra Rest-API
 
Clase 5 controller
Clase 5 controllerClase 5 controller
Clase 5 controller
 
Servicios web
Servicios webServicios web
Servicios web
 
la mejor forma de Conectar c# con mysql con archivos de configuracion
 la mejor forma de Conectar c# con mysql con archivos de configuracion  la mejor forma de Conectar c# con mysql con archivos de configuracion
la mejor forma de Conectar c# con mysql con archivos de configuracion
 

APIREST LARAVEL Y PHP.pptx

  • 1. APIREST PHP - LARAVEL ORM de Eloquent y JWT
  • 2. Herramientas Necesarias XAMPP SERVER(PHP >7.4) Composer Laravel Visual Studio Code
  • 4. Instalar Laravel  Una vez instalado el Composer en Windows, se debe abrir una consola de símbolo de sistema y ejecutar: composer global require laravel/installer  Se debe crear un directorio y ubicarse donde se desee crear el proyecto de laravel, ejecutando el siguiente comando:  laravel new ICOSALUDAPI
  • 5. Configurar la conexión a la Base de Datos  Debemos abrir el proyecto con el editor de código de su preferencia, en esta ocasión utilizaremos visual studio code, para editar el archivo .env donde se podrá configurar la conexión a la base de datos, para usar el driver de postgresql, debe digitar pgsql en DB_CONNECTION:
  • 6. Instalar Liberia para JWT  Abrimos una consola de comandos desde el VSCODE o en el símbolo del sistema y ejecutamos: composer require tymon/jwt-auth  Una vez termine la instalación se debe ejecutar la siguiente línea para publicar la configuración: php artisan vendor:publish --provider="TymonJWTAuthProvidersLaravelServiceProvider"  Debemos agregar la siguiente línea en el archivo app.php ubicado en el directorio config: TymonJWTAuthProvidersLaravelServiceProvider::class,
  • 7. Configurar JWT  Debemos ejecutar en la terminal de comandos o el CMD lo siguiente para agregar al archivo .env la clave secreta con la que se va firmar JWT. php artisan jwt:secret  Luego agregamos en el archivo Auth.php que se encuentra en la carpeta config la los parametros para agregar la capa de seguridad a la API y seleccionar el driver JWT:
  • 8. Configurar JWT  Se debe realizar las siguientes modificaciones al modelo users.php 1. Importar la librería: Use TymonJWTAuthContractsJWTSubject 2. Implementar la interface: implements JWTSubject 3. Agregar estos métodos: public function getJWTIdentifier() { return $this->getKey(); } /** Return a key value array, containing any custom claims to be added to the JWT. * * @return array */ public function getJWTCustomClaims() { return []; }
  • 9. Configurar Rutas para Autenticacion  Una vez configurado esto vamos a agregar las rutas en directorio routes archivo api.php Route::group([ 'middleware' => 'api', 'prefix' => 'auth' ], function ($router) { Route::post('signup', [AuthController::class, 'signup']); Route::post('login', [AuthController::class, 'login']); Route::post('logout', [AuthController::class, 'logout']); //Route::post('login', 'AuthController@login'); //Route::post('logout', 'AuthController@logout'); Route::post('refresh', 'AuthController@refresh'); Route::post('me', 'AuthController@me'); });
  • 10. Crear el AuthController  Se debe crear el controlador encargado del registro y autenticación de los usuario: php artisan make:controller AuthController Una vez creado el controlador se debe importar las siguiente Librerias: use IlluminateSupportFacadesAuth; use IlluminateHttpRequest; use IlluminateSupportFacadesValidator; use AppModelsUser;
  • 11. Crear el AuthController  Se debe crear el constructor para configurar las excepciones de seguridad:.  Procedemos a crear el método login() public function __construct() { $this->middleware('auth:api', ['except' => ['login', 'signup']]); } public function login() { $credentials = request(['email', 'password']); if (! $token = auth()->attempt($credentials)) { return response()->json(['error' => 'Unauthorized'], 401); } return $this->respondWithToken($token); }
  • 12. Crear el AuthController  Se debe crear también una función para retornar el usuario autenticado:  Luego a creamos el método logout() public function me() { return response()->json(auth()->user()); } public function logout() { auth()->logout(); return response()->json(['message' => 'Successfully logged out']); }
  • 13. Crear el AuthController  Luego se crea agrega la función refresh, para mantener la sesión actualizando el token:  Creamos la función que nos regresa el token esta debe estar protegida: public function refresh() { return $this->respondWithToken(auth()->refresh()); } protected function respondWithToken($token) { return response()->json([ 'access_token' => $token, 'token_type' => 'bearer', 'expires_in' => auth()->factory()->getTTL() * 60 ]); }
  • 14. Crear el AuthController public function signup(Request $request) { $validator = Validator::make($request->all(), [ 'name' => 'required', 'email' => 'required|string|email|max:100|unique:users', 'password' => 'required|string|min:6', ]); if($validator->fails()){ return response()->json($validator->errors()->toJson(),400); } $user = User::create(array_merge( $validator->validate(), ['password' => bcrypt($request->password)] )); return response()->json([ 'message' => '¡Usuario registrado exitosamente!', 'user' => $user], 201);} • Finalmente agregamos la función registrar usuarios:
  • 15. Crear Modelos a partir de la Base de Datos  Si tenemos una base de datos estructurada y configurada, podemos instalar la siguiente librería para crear los modelos: composer require reliese/laravel  Se debe publicar la configuración: php artisan vendor:publish --tag=reliese-models  Luego ejecutamos el siguiente comando para crear el modelo desde la base de datos(especificando el nombre de la tabla en --table: php artisan code:models --table=cita Fuente: https://github.com/reliese/laravel
  • 17. Creamos el Controlador de Cita Se ejecuta el comando: php artisan make:controller CitaController
  • 18. Creamos el Controlador de Cita Se ejecuta el comando: php artisan make:controller CitaController Agregamos el método index, para mostrar todo:
  • 19. Creamos el Controlador de Cita Agregamos el método store, para guardar:
  • 20. Creamos el Controlador de Cita Agregamos el método showCitasTercero, para mostrar por tercero:
  • 21. Creamos el Controlador de Cita Agregamos el método update, para actualizar los datos de la cita:
  • 22. Creamos el Controlador de Cita Agregamos el método destroy, para actualizar los datos de la cita:
  • 23. Configuramos las Rutas para las Citas Agregamos en el archivo api.php ubicado en directorio de routes:
  • 24. Ejecutamos el comando: php artisan route:list Consultar Rutas:
  • 25. POSTMAN Probamos las diferentes rutas Probamos el API:
  • 26. Agregamos la Capa de Seguridad • Vamos nuevamente a las rutas y movemos todo lo que necesite autenticación dentro del siguiente código: Route::group(['middleware' => [‘api']], function() { //Todo lo que este dentro de este grupo requiere verificación de usuario. }
  • 27. TRAIT PHP - LARAVEL USO DE TRAITS FILTROS Y RESPUESTA GENERAL
  • 28. TRAIT • Los traits son un mecanismo de reutilización de código en leguajes que tienen herencia simple, como PHP. El objetivo de los traits es reducir las limitaciones de la herencia simple permitiendo reutilizar métodos en varias clases independientes y de distintas jerarquías. • Esto es un concepto netamente de diseño, por lo cual para su aplicación debemos crear el directorio o la carpeta llamada Traits, donde vamos almacenar todas las clases que vamos a usar como Trait en las diferentes clases de nuestro proyecto, normalmente para las API se puede utilizar el trait de manera publica para todos los controladores declarando su uso en el controlador principal.
  • 29. Crear el Trait • Se debe crear el directorio Traits y luego crear un nuevo archivo, por ejemplo ApiResponser.php, luego declarar el encabezado <?php el namespace y se inicializa con la palabra clae trait seguido del nombre que deseamos ponerle:
  • 30. Declarar Funciones y Procedimientos del TRAIT • Podemos declarar diferentes funciones dentro del trait las cuales vamos a utilizar como una especie de funciones publicar en cualquier controlador si declaramos que se usara el trait en el controlador base.
  • 32. Filtros • Dentro de nuestro trait principal podemos declarar funciones dinámicas que permitan el filtrado de datos de nuestra API, modificando la funciones mediante la cual se muestran todos los datos y aplicándoles las diferentes funciones necesarias: