PHPackages                             joalcapa/gauler - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. joalcapa/gauler

ActiveProject[API Development](/categories/api)

joalcapa/gauler
===============

the api gauler

v1.0.15(7y ago)163MITPHPPHP &gt;=7.0.0

Since Sep 9Pushed 7y ago1 watchersCompare

[ Source](https://github.com/joalcapa/gauler)[ Packagist](https://packagist.org/packages/joalcapa/gauler)[ RSS](/packages/joalcapa-gauler/feed)WikiDiscussions master Synced 2w ago

READMEChangelog (10)Dependencies (3)Versions (21)Used By (0)

Gauler
======

[](#gauler)

Api standar RestFul by Jose Caceres

[¿Que es REST?](#hablemos-un-poco-de-las-apis-restFul)
[¿Que es Gauler?](#api-gauler)
[Instalacion y configuracion](#instalacion)
[Modelos](#que-vuelvan-los-heroes)
[Rutas](#rutas-del-modelo)
[Middlewares](#middlewares)
[Controladores](#controlador-del-modelo)
[CRUD automatico](#crud-automatico)
[Autenticacion](#autenticacion)
[Gaulerium CLI](#gaulerium-cli)

Hablemos un poco de las apis RestFul
------------------------------------

[](#hablemos-un-poco-de-las-apis-restful)

Existen diversos servicios web como lo son SOAP, GraphQL entre otros. Pero REST es el servicio web popular por excelencia, muchos sistemas y frameworks trabajan bajo esta arquitectura, aproximadamente en el año 2000, Roy Fielding propone este nuevo servicio web.

Las caracteristicas son muchas y existen muchos foros y blogs donde se habla al respecto, la primera fuente a consultar es la misma de Roy Fielding, en su [trabajo](https://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm) acerca de Rest, algo mas ligero y rapido lo puedes encontrar en el siguiente [articulo](http://asiermarques.com/2013/conceptos-sobre-apis-rest/), en este articulo Asier Marqués describe todas las caracteristicas escenciales para una arquitectura REST.

#### Metodos RestFul

[](#metodos-restful)

Son muy sencillos de explicar, basicamente es una convencion de nombres para ejecutar una determinada logica rest, estan establecidos para ser ejecutados por medio de una URI y un metodo especifico:

##### 1. Index:

[](#1-index)

Metodo: GET
URI: /resources
Accion: Listar recursos

##### 2. Show:

[](#2-show)

Metodo: GET
URI: /resources/{id}
Accion: Obtener el recurso mediante un id especifico

##### 3. Store:

[](#3-store)

Metodo: POST
URI: /resources
Accion: Crear un nuevo recurso

##### 4. Update:

[](#4-update)

Metodo: PUT
URI: /resources/{id}
Accion: Actualizar el recurso mediante un id especifico

##### 5. Delete:

[](#5-delete)

Metodo: DELETE
URI: /resources/{id}
Accion: Eliminar el recurso mediante un id especifico

#### Metodos RestFul relacionales

[](#metodos-restful-relacionales)

Los metodos antes descritos responden a operaciones CRUD en modelos unicos, los cuales no dependen de relaciones con ningun otro modelo, pero en el desarrollo de api`s, siempre trabajamos con modelos que tienen relaciones con otros modelos, bien sea relacion de uno a uno, uno a muchos y muchos a muchos, REST define una manera de definir endpoints considerando la relacion.

#### URI jerarquica

[](#uri-jerarquica)

Como podemos ver en la realidad una tienda tiene muchos productos, entonces ¿como podemos definir un endpoint para un determinado producto de una determinada tienda?, o ¿como podemos listar todos los productos de una determinada tienda?.

Estos problemas se pueden resolver de una manera muy facil, solo bastaria pasar los parametros por los cuales quires filtrar la consulta directamente en la URI, pero esta solucion no satisface el proposito por el cual fue pensada la arquitectura REST, la solucion es muy sencilla y esta en la definicion de la propia URI.

##### 1. Index:

[](#1-index-1)

Metodo: GET
URI: /shops/{id\_shop}/products
Accion: Listar todos los productos de una determinada tienda

##### 2. Show:

[](#2-show-1)

Metodo: GET
URI: /shops/{id\_shop}/products/{id}
Accion: Obtener el producto mediante su id, que pertenece a una determinada tienda

##### 3. Store:

[](#3-store-1)

Metodo: POST
URI: /shops/{id\_shop}/products
Accion: Crear un nuevo producto asociado a una determinada tienda

##### 4. Update:

[](#4-update-1)

Metodo: PUT
URI: /shops/{id\_shop}/products/{id}
Accion: Actualizar el producto mediante su id, que pertenece a una determinada tienda

##### 5. Delete:

[](#5-delete-1)

Metodo: DELETE
URI: /shops/{id\_shop}/products/{id}
Accion: Eliminar el producto mediante su id

NOTA: Puedes utilizar todas las URIS sin la necesidad de verificar la relacion con otros modelos, ejemplo:

##### 1. Index:

[](#1-index-2)

Metodo: GET
URI: /products
Accion: Listar todos los productos existentes

Api Gauler
==========

[](#api-gauler)

Gauler es una propuesta para desarrollar un sistema simple, capaz de ejecutar operaciones CRUD a determinados modelos, mediante la ejecucion de logica escrita en los metodos RestFul establecidos en sus controladores, esta orientando al patron Modelo-Controlador, no existen vistas ya que se trata de una api RestFul.

Instalacion
===========

[](#instalacion)

```
composer create-project joalcapa/gauler

```

Configuracion de Gauler
=======================

[](#configuracion-de-gauler)

La configuracion de Gauler se encuentra en el archivo config/config.php

```
