Crear servicios RESTFul con Epiphany Framework y PHP

Epiphany Framework PHP

Epiphany es un «micro» framework rápido, claro y de fácil uso para crear servicios RESTful usando PHP. Es muy simple pero muy poderoso a la vez, permite a los desarrolladores crear servicios REST en muy poco tiempo.
Epiphany es un proyecto open source que podemos descargar desde GitHub, para comenzar a usarlo debemos obviamente tener instalado PHP5+ y mod_rewrite en nuestro servidor Apache.

Comenzar con Epiphany es realmente fácil, primero instalamos el framework descomprimiendo el archivo que descargamos previamente en una carpeta (por ejemplo: /testepiphany ) en nuestro servidor y con eso estaríamos en condiciones de comenzar a trabajar y probarlo.

Pasos básicos

En el sitio contamos con muy buena documentación y ejemplos, así que veamos uno completo y funcional, para eso debemos crear un archivo index.php


//incluir la libreria principal
include_once './src/Epi.php';

//setear el directorio base de la aplicación, sin esto el framework no podrá
//cargar los módulos necesarios para trabajar
Epi::setPath('base', './src');

//cargamos el modulo route
Epi::init('route');

//seteamos rutas de acceso y funciones handlers
getRoute()->get('/', 'home');
getRoute()->get('/contacto', 'contactUs');
getRoute()->run();

//funciones handlers
function home() {
       echo 'Estas en la pagina de inicio';
}

function contactUs() {
       echo 'Envianos un mail a foo@bar.com';
}

Además, debemos agregar en nuestro directorio de trabajo un archivo .htaccess que redirecciona todos los request hacia nuestro index.php.

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\?*$ index.php?__route__=/$1 [L,QSA]

Con estos dos archivos ya tenemos varios servicios funcionando y nos tomó apenas unos minutos.
El primer servicio REST lo accederíamos así, en el home de la aplicación:

http://localhost/testepiphany/ 

el segundo servicio quedaría publicado en:

http://localhost/testepiphany/contacto 

Qué más tenemos…?

Epiphany nos ofrece varios módulos que nos permiten implementar distintas funcionalidades en nuestras aplicaciones.
Para destacar algunos nombraremos:

  • Route: es el modulo básico para trabajar, nos permite mapear las Urls con nuestras funciones handlers.
  • Database: como su nombre nos indica nos posibilita acceder a base de datos de forma simple.
  • Config: nos permite cargar archivos de configuración, realmente útil.

Manejo de parámetros

Para gestionar parámetros debemos usar expresiones regulares en nuestras rutas, para probarlo debemos agregar a nuestro ejemplo anterior, estas rutas y funciones:

//ejemplo con paramteros
//aceptamos solo números con esta expresión (\d+)
getRoute()->get('/numeros/(\d+)', 'soloNumeros');

//aceptamos solo letras con esta expresión (\w+)
getRoute()->get('/letras/(\w+)', 'soloLetras');

function soloNumeros($param) {
       echo 'parametro numeros: '.$param;
}
function soloLetras($param) {
       echo 'parametro letras: '.$param;
}

Para ver el funcionamiento accedemos de esta forma:

http://localhost/testepiphany/letras/abcd

y

http://localhost/testepiphany/numeros/1234

En estos casos estamos recibiendo como valores de parametros «abcd» y «1234» respectivamente.

Para finalizar

Además, Epiphany nos ofrece otras características importantes como templates, views, clases handlers y expresiones regulares en las rutas (como ya vimos), entre otros. Realmente vale la pena investigar a fondo este framework.

Con respecto a la documentación, ya hemos mencionado que es bastante completa y ademas el framework trae bastantes ejemplos de código muy útiles. De todos modos Epiphany es un framework joven que aun puede mejorarse mucho mas pero que ya con su simplicidad y facilidad de uso llama la atención.

Bueno esperemos que les haya gustado este articulo y si conocen algún otro framework para construir servicios web pueden mencionarlo y compartirlo en los comentarios.

Mas información:

Epiphany Framework

Que es un servicio RESTful?

Expresiones regulares

Créditos de fotografía: Stuck in Customs via photo pin cc

Juan Benitez

Fundador de Tecnopedia.net. Licenciado en Informática, desarrollador Web, Android y PHP. Apasionado de las tecnologías y el fútbol. Reparto mis días programando, creando sitios, apps o escribiendo en @Tecnopedianet... y sí, además tengo esposa y una hija ;)

View all posts by Juan Benitez →

4 thoughts on “Crear servicios RESTFul con Epiphany Framework y PHP

  1. Interesante articulo, aun que no me funciono en local de la manera http://localhost/testepiphany/xxxxx/xxxx, el apache lo interpreta como si fuesen carpetas. Mas sin embargo, como la mayoría de los frameworks, requieren de añadir un nuevo host en el archivo hosts(para linux) y un virtual hosts con sus directivas en los sitios habilitados para apache local, posteriormente reinicié los servicios de networking y apache y funcionó correctamente, saludos.

  2. Hola Omar, si el artículo presupone que ya se tiene configurado un ambiente de desarrollo en Apache; de todas formas muchas gracias y está buena tu aclaración ya que le puede servir a otros lectores. Saludos

  3. Me gusto mucho tu articulo me estoy iniciando con rest y aparentemente este framework me ayuda con mi proyecto por su simplicidad, tengo una duda si tu creas una funcion get para recibir algo por la url pero esto de envia tambien en protocolo post
    para efectos de rest (Epiphany) como o maneja?

  4. Hola Carla, si entiendo bien tu pregunta, lo que tu quieres tener es una misma url que acepte párametros por POST y por GET; si es asi te dejo un ejemplo:

    
    getRoute()->get('/contacto', 'contactoGet');
    getRoute()->post('/contacto', 'contactoPost');
    getRoute()->run();
    function contactoGet(){
        echo "desde get";
        $parametro = $_GET['nombre'];
        procesar($parametro);
    }
    function contactoPost(){
        echo "desde Post";
        $parametro = $_POST['nombre'];
        procesar($parametro);
    }
    function procesar($param){
        echo $param;
    }
    

    espero que esto te ayude en tu proyecto.
    saludos.

Comments are closed.