SlideShare una empresa de Scribd logo
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

PDF
guia1 para aprener laravel desde cero con ejemplos practico
PDF
Aplicación abc. asp net mvc 3
PDF
Manual Basico De Struts
PPT
Construccion a través de compontes
PPT
Php.y.my sql
ODP
Taller introduccion symfony2
PPTX
Funciones
guia1 para aprener laravel desde cero con ejemplos practico
Aplicación abc. asp net mvc 3
Manual Basico De Struts
Construccion a través de compontes
Php.y.my sql
Taller introduccion symfony2
Funciones

Similar a APIREST LARAVEL Y PHP.pptx (20)

PDF
-.-Manual Laravel bootcamp blablabla-.-.
ODP
Introducción a Kohana Framework
PDF
William fabricio manual de sistemas sas
PPTX
Tema servlets
PPTX
Tema servlets
PPTX
Tema servlets
PPTX
Tema servlets
ODP
Desarrollo de Apps Web en Ruby on Rails
PDF
Taller desarrollando sitios web multiplataforma
PDF
Tallerprogramacion
ODP
Presentacion
PPT
Php Bitter Sweet Symfony!
DOCX
LARAVEL documentación y comandos para programar rapido
PDF
Guia herramientas de bd
PDF
Presentacion sobre cassandra
PDF
Web 2.0 ajax con SharePoint
PDF
Aprendiendo AWS Lambda con API Gateway y DynamoDB
PPSX
Sesion n°6
PDF
Laravel 5.1
PDF
Endpoints Seguros en nuestra Rest-API
-.-Manual Laravel bootcamp blablabla-.-.
Introducción a Kohana Framework
William fabricio manual de sistemas sas
Tema servlets
Tema servlets
Tema servlets
Tema servlets
Desarrollo de Apps Web en Ruby on Rails
Taller desarrollando sitios web multiplataforma
Tallerprogramacion
Presentacion
Php Bitter Sweet Symfony!
LARAVEL documentación y comandos para programar rapido
Guia herramientas de bd
Presentacion sobre cassandra
Web 2.0 ajax con SharePoint
Aprendiendo AWS Lambda con API Gateway y DynamoDB
Sesion n°6
Laravel 5.1
Endpoints Seguros en nuestra Rest-API
Publicidad

Último (6)

DOCX
trabajo programacion.docxxdxxxddxdxxdxdxxxdxxdxdxd
PPTX
sistemas de informacion.................
PDF
Su punto de partida en la IA: Microsoft 365 Copilot Chat
PPTX
Conceptos basicos de Base de Datos y sus propiedades
PDF
AutoCAD Herramientas para el futuro, Juan Fandiño
PPTX
Derechos_de_Autor_y_Creative_Commons.pptx
trabajo programacion.docxxdxxxddxdxxdxdxxxdxxdxdxd
sistemas de informacion.................
Su punto de partida en la IA: Microsoft 365 Copilot Chat
Conceptos basicos de Base de Datos y sus propiedades
AutoCAD Herramientas para el futuro, Juan Fandiño
Derechos_de_Autor_y_Creative_Commons.pptx
Publicidad

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: