Cómo implementar un servidor REST en PHP con SlimFramework

Rafa Morales 21 Noviembre 2016
4min
0
SlimFramework

Un servidor web REST, un API REST o una aplicación web REST, cuyas siglas significan REpresentational State Transfer, es una aplicación servidor web que mediante peticiones HTTP se encargar de proporcionar acceso remoto a una serie de recursos, con las siguientes particularidades:

  • Se basa en un protocolo cliente/servidor sin estado, por lo que cada mensaje HTTP posee toda la información necesaria para completar las peticiones.
  • Utiliza las operaciones HTTP GET, POST, PUT y DELETE para implementar las operaciones CRUD de persistencia de datos (Create, Read, Update and Delete).
  • Utiliza las URI de las peticiones HTTP para identificar los recursos.
  • Se apoya en formatos como HTML, XML, JSON, etc para representar los estados del servidor.

Para conocer más detalles sobre los servidor web REST podéis leer los siguientes artículos:

 

Os proponemos desarrollar vuestro propio servidor REST bajo lenguaje PHP en un servidor Apache. Existen numerosos hosting gratuitos donde podéis implementarlo o preparar un servidor web local en vuestro propio ordenador. Esta tarea no es el fin de este artículo. Os dejo unos enlaces por si necesitáis algo más de información:

 

Y para ello nos apoyaremos en SlimFramework, que nos proporcionará el código base de nuestro API REST y de comunicación con el cliente de una manera simple y rápida, con una serie de funciones definidas que harán que con pocas líneas de código tengamos funcionando nuestro servidor en poco tiempo.

Este framework tiene varias versiones con notables diferencias de implementación entre una y otra, por lo que os mostramos a continuación diferentes códigos de ejemplo según sea la versión que elijáis utilizar.

 

SlimFramework (Versión 2)

Instalación

En el mismo directorio debemos situar el siguiente contenido:

  • Directorio Slim con el código fuente del framework.
  • Fichero index.php con nuestro código personal.
  • Fichero .htaccess para redirigir todas las peticiones al servidor Apache en ese directorio al fichero index.php.

Desarrollo

Una implementación básica de un servidor REST con acceso a base de datos MySQL y la información del estado en JSON la podéis encontrar comentada en el siguiente repositorio de Bitbucket:

 

SlimFramework (Versión 3)

Instalación

La instalación se recomienda hacerla descargando el código fuente con Composer, un gestor de descarga de librerías y frameworks en PHP (leer más sobre Qué es Composer). Si estamos trabajando en un hosting compartido y no tenemos posibilidad de acceso a su Shell ni de instalar Composer, deberíamos hacer la instalación y desarrollo en un servidor web local y posteriormente subir el contenido del directorio al hosting compartido.

1) Instalar Composer en el directorio del servidor REST. Para ello nos servimos del ejecutable de PHP, con el que ejecutamos los siguientes comandos. En ellos "php" se sustituye por la ruta del ejecutable de PHP que tengamos instalado en nuestro servidor web. Las siguientes líneas son un ejemplo, entrar en la web de Composer y ejecutar las que ellos tienen publicadas, ya que el identificador hash seguramente haya cambiado en este tiempo.

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('SHA384', 'composer-setup.php') === 'aa96f26c2b67226a324c27919f1eb05f21c248b987e6195cad9690d5c1ff713d53020a02ac8c217dbf90a7eacc9d141d') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');" 

2) Descargar SlimFramework con Composer en el mismo directorio del servidor REST. Sustituir [my-app-name] por el nombre de vuestro proyecto. Creará un directorio con el mismo nombre y con todo el código fuente de SlimFramework en su interior.

php composer.phar create-project slim/slim-skeleton [my-app-name]
create-project slim/slim-skeleton [my-app-name]
create-project slim/slim-skeleton [my-app-name]

3) Crear en el directorio creador anteriormente [my-app-name] los siguientes archivos.

  • Fichero index.php con nuestro código personal.
  • Fichero .htaccess para redirigir todas las peticiones al servidor Apache en ese directorio al fichero index.php.

Desarrollo

Una implementación básica de un servidor REST con acceso a base de datos MySQL y la información del estado en JSON la podéis encontrar comentada en el siguiente repositorio de Bitbucket: