PHP REST API Routing

He estado buscando API y desarrollando una API REST para un proyecto en el que estamos trabajando.

La API solo acepta conexiones de una fuente en formato JSON, lo entiendo bien.

Si entiendo la mayoría de lo que se dice, sin embargo, no entiendo el tercer ejemplo de código y dónde iría la información de enrutamiento.

El ejemplo que han proporcionado es:

$data = RestUtils::processRequest(); switch($data->getMethod) { case 'get': // retrieve a list of users break; case 'post': $user = new User(); $user->setFirstName($data->getData()->first_name); // just for example, this should be done cleaner // and so on... $user->save(); break; // etc, etc, etc... } 

La parte de la que no estoy seguro es cómo aceptar la solicitud original, es decir, / get / user / 1: cómo dirigir eso a la parte correcta del script.

Si ha habido otra pregunta de SO (he buscado durante bastante tiempo) o algún otro ejemplo educativo, sírvase orientarme en la dirección correcta.

Actualizar

He encontrado algunas clases de enrutamiento PHP, pero nada que sea pequeño y hace lo que dice en la lata, todo parece enrutar + 2000 otras cosas en la parte superior.

Ahora tengo todas las clases que necesito para este proyecto nombrado porque deseo acceder a ellas desde el URI, es decir:

/ data / users / data / users / 1 / hash / users / hash / users / 1 / put / users / 1? json = {data}

Entonces todos estos deberían usar la clase de los users , luego uno de los datos, hash o poner métodos que pasen algo adicional después de eso en el método como argumentos.

¡Si alguien pudiera explicar cómo funciona ese bit, sería una gran ayuda!

Gracias 🙂

Desde el principio, parece que el sitio web que ha indicado no incluye un enrutador o un despachador. Hay muchos frameworks PHP5 alrededor de los cuales incluye una ruta y / o un despacho o alguna descripción. ( http://en.wikipedia.org/wiki/Comparison_of_Web_application_frameworks#PHP )

Un enrutador sería una clase que tiene una lista de rutas predefinidas que podrían ser realmente básicas o bastante complejas, todo depende de lo que quieras hacer. Un buen IMO de enrutador REST se vería así:

 :module/:controller/:params 

Y luego el enrutador enrutaría la acción correcta en función de la solicitud HTTP (GET, POST, PUT, DELETE, OPTIONS)

 public function getAction($id) { // Load item $id } 

En su caso, necesitará una regla de redireccionamiento que enviará la solicitud a algo como este index.php? User = id. Luego puede procesar la solicitud de obtención.

La mejor solución que encontré para la architecture REST de php (incluido el enrutamiento) es:

http://peej.github.com/tonic/