lunes, 19 de noviembre de 2018
Crear una api rest con Lumen 5.7
Que es lumen
Lumen es un micro framework basado en laravel, al utilizar solo los componentes centrales de Laravel lo hace mas rápido y eficiente.Requisitos
Para utilizar laravel o lumen es necesario tener instalado php de preferencia 7.1.3 en adelante.
Lumen utiliza Composer para gestionar sus dependencias. Entonces, antes de usar Lumen, asegúrese de tener Composer instalado en su máquina.
Se creara una tabla en la base de datos mysql o MariaDB por lo que se debe tener instalado una de las 2.
- PHP
- https://windows.php.net/download#php-7.2
- Recuerde instalar VC15 x64 Non Thread Safe
- Composer
- https://getcomposer.org/download/
- Mysql o Maria db
- https://dev.mysql.com/downloads/mysql/
- https://downloads.mariadb.org/
Objetivo
Crear una api para acceder a la tabla Categorias.Crear proyecto
Primero descargue el instalador de lumen (solo se hace una vez)
composer global require "laravel/lumen-installer"
Ahora vamos a crear el proyecto bajo el nombre ejemplo (esto puede tardar)
lumen new ejemplo
Comprobaremos el proyecto creado, ingresando a la carpeta y ejecutando el servidor integrado de de php.
cd ejemplo
<?php
php -S localhost:8000 -t public
Luego navegamos a la url generada.
La documentación hasta este punto la pueden encontrar en esta url.
https://lumen.laravel.com/docs/5.7
Configuraciones de base de datos
Configurar acceso a bases de datos.
El archivo donde lumen administra sus configuraciones por medio del archivo .env el cual se copia del archivo .env.example
renombrado archivo
Linux
- cd ejemplo
- mv .env.example .env
- cd ejemplo
- Rename-Item -Path env.example -NewName .env
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=ejemplo DB_USERNAME=homestead DB_PASSWORD=secret
En la capacitación nos conectaremos con usuario root luego lo cambiaremos en ambientes de producción.
No olvide crear la base datos:
create database ejemplo;
Migraciones
php artisan make:migration create_categories_table
Las migraciones se ingresan dentro de la carpeta Database/migration aquí encontrará el archivo creado.
Ahora vamos a crear los campos de la tabla categorías.
public function up() { Schema::create('categories', function (Blueprint $table) { $table->increments('CategoryID'); $table->string('CategoryName'); $table->mediumText('Description'); $table->binary('Picture')->nullable(); $table->timestamps(); }); }Ya que tenemos lista la migración lo enviaremos a la base de datos.
php artisan migrate
Migration table created successfully.
Migrating: 2018_11_20_041401_create_categories_table
Migrated: 2018_11_20_041401_create_categories_table
Nota.
Si te equivocaste o puede des hacer la creación de la tabla con:
php artisan migrate:rollback
Documentación hasta este punto:
https://laravel.com/docs/5.7/migrations
Modelo
Cada tabla de base de datos tiene un "Modelo" correspondiente que se utiliza para interactuar con esa tabla. Los modelos le permiten consultar datos en sus tablas, así como insertar nuevos registros en la tabla.Lumen no carga inicialmente Eloquent.
Para poder usarlos, debemos des comentar las siguientes líneas de código ubicadas en
bootstrap/app.php
$app->withFacades(); $app->withEloquent();
Cree un archivo con el nombre Categories.php bajo la carpeta App
use Illuminate\Database\Eloquent\Model;
class Categories extends Model
{
protected $table = 'Categories';
protected $primaryKey = 'CategoryID';
protected $fillable = ['CategoryID','CategoryName','Description'];
protected $hidden = ['created_at','updated_at','Picture'];
}
Documentación:
Filltable = Propiedades disponibles
hidden= Propiedades que vamos a ocultar
https://laravel.com/docs/5.7/eloquent
Controladores
En lugar de definir toda la lógica de manejo de su solicitud como cierres en archivos de ruta, es posible que desee organizar este comportamiento usando clases de controlador. Los controladores pueden agrupar la lógica de manejo de solicitudes relacionadas en una sola clase. Los controladores se almacenan en el directorio.app/Http/Controllers
<?php namespace App\Http\Controllers; use App\Categories; use Illuminate\Http\Request; class CategoriesController extends Controller { public function index() { $categories = Categories::all(); return response()->json($categories, 200); } public function getCategories($id) { $categoria = Categories::find($id); if($categoria) { return response()->json($categoria, 200); } return response()->json(["Categoria no encontrado"], 404); } public function createCategories(Request $request) { $categoria = new Categories; $categoria->CategoryName = $request->CategoryName; $categoria->Description = $request->Description; $categoria->save(); return response()->json($categoria); } public function updateCategories(Request $request,$id) { $categoria= Categories::find($id); $categoria->CategoryName = $request->CategoryName; $categoria->Description = $request->Description; $categoria->save(); return response()->json($categoria); } public function destroyCategories($id) { $categoria = Categories::find($id); $categoria->delete(); return response()->json('La categoria fue eliminada'); } }
Documentación:
https://laravel.com/docs/5.7/controllers
Router
Todas las rutas de Laravel se definen en sus archivos de ruta, que se encuentran en el routesdirectorio. Estos archivos se cargan automáticamente por el marco. El archivo define rutas que son para su interfaz web.Abra el archivo web.php en la carpeta routes
$router->get('/categories', 'CategoriesController@index'); $router->get('/categories/{id}', 'CategoriesController@getCategories'); $router->post('/categories', 'CategoriesController@createCategories'); $router->put('/categories/{id}', 'CategoriesController@updateCategories'); $router->delete('/categories/{id}', 'CategoriesController@destroyCategories');
Documentación
https://laravel.com/docs/5.7/routing
Probando
Es hora de probar nuestra api, lo ideal es usar una instalar una aplicación llamada POSTMAN.https://www.getpostman.com/download?platform=win64
Ingresando Categorías
Suscribirse a:
Entradas (Atom)