viernes, 13 de mayo de 2016

Ejemplo Api con Lumen

Lumen es un microframework basado en Laravel, el cual ha sido desarrollado para crear micro servicios web.

Ya debes de tener instalado composer para continuar.


Puedes bajar la solucion de:
https://github.com/cjorellana/northwindAPI

Crear proyecto


1.) Crear el proyecto lumen, vamos a crear el proyecto con composer.

Proyecto sería api y utilizaremos la versión 5.1


<?php
composer create-project laravel/lumen=5.1 api
?>

2.)  Comprobar y iniciar el servidor, ingrese a la carpeta api

Comprobando los comandos de lumen

php artisan

Levantando nuestro servidor con lumen,

php artisan serve

Navegue a:

http://localhost:8000/



Configurar

3.) Vamos a configurar el acceso a la db

Cambie el nombre de :

.env.example

a

.env

Abrimos el archivo .env y configuremos las credenciales de la base de datos.

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=ejemplo
DB_USERNAME=homestead
DB_PASSWORD=secret

Abra el archivo "api/bootstrap/app.php" y descomenta

Dotenv::load(__DIR__.'/../');
$app->withFacades();
$app->withEloquent();


Migradores 

Los migradores nos sirven para crear y cambiar nuestro esquema de la base de datos, si ya tienes las tablas salta estos pasos.

Ahora vamos un migrate para crear la tabla categories.

php artisan make:migration create_categories_table --create="Categories"

Mostrará un mensaje:


Created Migration: 2016_03_30_062918_create_categories_table

Las migraciones se ingresan dentro de la carpeta Database/migration aquí encontrará  el archivo llamado Created Migration: 2016_03_30_062918_create_categories_table abrimos este archivo.


<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateCategoriesTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('Categories', function (Blueprint $table) {
            $table->increments('CategoryID');
            $table->string('CategoryName');
            $table->mediumText('Description');
            $table->binary('Picture');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('Categories');
    }
}

Ahora vamos a crear la la tabla categories.


php artisan migrate

Migration table created successfully.

Migrated: 2016_03_30_062918_create_categories_table


Podemos revisar si creo las tablas de manera correcta.



Modelos

Vamos a crear un modelo, cree el archivo Categories.php bajo la carpeta App

"app/Categories.php"

<?php namespace 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'];
 
}

Filltable = Propiedades disponibles
hidden= Propiedades que vamos a ocultar

Controladores

Vamos a crear un controlador, crear un archivo llamado CategoriesController.php en la carpeta "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 = Categories::create($request->all());  
        return response()->json($categoria,201);  
    }
}

Router

Vamos a crear un controlador, crear un archivo llamado router.php en la carpeta "app/Http"

<?php
$app->get('/categories', 'CategoriesController@index');
$app->get('/categories/{categories}', 'CategoriesController@getCategories');
$app->post('/categories', 'CategoriesController@createCategories');
?>

Probando

Es hora de probar nuestra api, lo ideal es usar una extensión de chrome llamada POSTMAN.

Get 




Post


No hay comentarios.: