tatuco/api-base-laravel

This package is not installable via Composer 1.x, please make sure you upgrade to Composer 2+. Read more about our Composer 1.x deprecation policy.

Project base for api rest.

dev-master 2020-07-07 15:46 UTC

This package is not auto-updated.

Last update: 2021-11-25 23:20:26 UTC


README

Instalacion

Clonar el repositorio. comandos:

$ cd carpeta-del-proyecto
$ cp .env.example .env
$ php artisan key:generate

Crear la Base de Datos y colocar el nombre en la variable de entorno DB_DATABASE .env . Correr los comandos:

$ php artisan migrate --seed

Get api:

probar endpoint /api/:

curl -X GET \
  http://127.0.0.1:8000/api/ \
  -H 'Content-Type: application/json' \

Response:

{
    "version": "Laravel Components 5.7.*",
    "time": {
        "date": "2018-08-22 20:07:17.618814",
        "timezone_type": 3,
        "timezone": "UTC"
    }
}

Crear Modelo correr el comando con all creara : controller, migration, service, model y repository de esa entidad

$ php artisan generator:tatuco Entity all

Validaciones:

// al guardar
 protected $validateStore = [
        'name' => 'required|max:255',
        'description' => 'required',
    ];
  //al actualizar
   protected $validateUpdate = [
          'name' => 'required|max:255',
          'description' => 'required',
      ];  

ir a App/Core/TatucoController.php para establecer en la siguiente propiedad, las validaciones para todo el mundo

protected $validateDefault = [];

Do Where:

El doWhere es una parametro enviado atraves de la url hacia la api, con el objetivo de filtrar, las consultas desde el cliente, evitando crear endpoints sin fin para cada cosa, Ejemplo:

/api/users?where=[{"op": "eq", "field": "id", "value": 1}]
  • Esto seria el quivalente a :
 SELECT * FROM users WHERE id = 1;
  • donde op representa el operador (<, >, = ...) field representa la columna y value el valor que queremos obtener.

Operadores

Operador Simbolo Descripcion
ct like '%luis%'
sw like 'lu%'
ew like '%is'
eq =
gt >
gte >=
lte <=
lt <
in in
bt entre
  • por default el operador es "eq", tambien podemos agregar tantas condiciones como queramos:
 where=[{"op":"bt","field":"id","value":[1,3],"filter":"and"},{"op":"in","field":"id","value":[5,9],"filter":"or"},{"op":"eq","field":"id","value":4,"filter":"or"}]

traduccion SQL:

 SELECT * FROM users WHERE id BETWEEN 1 AND 3 AND id IN (5, 9) OR id = 4;
  • Ordenamiento:
   &order=["id","desc"]    
  • Relaciones:
&join=[{"table":"users","fk":"role.user_id","pk":"users.id","type":"inner"}]
  • Especificar columnas, por defecto es ['*']:
 &columns=["id as cedula", "name as Nombre"];
  • Filtros por fechas: solo de debe agregar al where la propiedad "type" (date, year, month, day, time)
 /api/users?where=[{"op": "eq", "field": "date_created", "value": "2019-01-22", "type": "date"}]
 ```
### License

MIT License Luis.