API RESTFULL con Silex

La API Rest de Ocrend Framework está realizada con Silex, es un microframework desarrollado con PHP. Se basa en los mismos principios de Symfony y Pimple y está inspirado por el microframework Sinatra de Ruby.

  • Conciso: Silex proporciona una API concisa e intuitiva.
  • Extensible: Silex dispone de un sistema de extensiones basado en el micro contenedor de servicios Pimple y que facilita el uso de librerías creadas por terceros.
  • Facil de testear: Silex utiliza el componente HttpKernel de Symfony para abstraer el manejo de la petición HTTP y de su respuesta. Esto facilita mucho la creación de tests tanto para las aplicaciones como para el propio framework. Además, Silex respeta la filosofía de funcionamiento de la especificación HTTP y te ayuda a que tu también la sigas.
  • El funcionamiento básico de Silex consiste en definir controladores y asociarlos con rutas, todo en un solo paso.

Cómo utilizarla

La integración con Ocrend Framework está realizada por defecto, al configurar el framework para que funcione en un servidor, también lo estará la api restfull.

Peticiones

La integración por defecto acepta peticiones JSON con los verbos GET y POST

Verbo GET en ./api/controllers/get.controllers.php


$app->get('/mi/ruta/get', function() use($app) {

    return $app->json(array('Esto funciona en GET'));
    
});

Verbo POST en ./api/controllers/post.controllers.php


$app->post('/mi/ruta/post', function() use($app) {

    return $app->json(array('Esto funciona en POST'));
    
});

Cómo enviar data de un formulario como JSON vía AJAX con jQuery


var __data = {};

$('#ID_DE_FORMULARIO').serializeArray().map(function(x){__data[x.name] = x.value;}); 

$.ajax({
    type : '', // POST o GET
    url : 'api/endpoint',
    dataType: 'json',
    data : __data,
    success : function(json) {
        console.log(json);
    },
    error : function(xhr, status) {
        console.log('Ha ocurrido un problema interno');
    }
});

Activar/Desactivar la API

Se debe marcar como false el valor de api/active en Ocrend.ini.yml para desactivar la API.

Al estar desactivada, cualquier petición realizada recibirá una respuesta 200 con JSON:


{
    'success' : 0,
    'message' : 'Servicio inactivo'
}

Controlar el origen de las peticiones

El origen de las peticiones puede ser restringido a dominios especificados en api/origin en Ocrend.ini.yml, por defecto el valor es *, ésto implica que la API puede recbir peticiones de cualquier fuente externa al servidor, se recomienda modificar dicho parámetro por el dominio en donde correrá el framework, si ésta no será consumida desde fuentes externas.

Documentación extensa