1) No, si se utiliza un marco REST como RecessPHP o si utiliza una regla mod_rewrite en su archivo .htaccess para redirigir todas las solicitudes de la API en un solo archivo PHP (conocido como el controlador frontal).
.htaccess
RewriteEngine On
RewriteRule ^/api/ api.php
api.php
$request = $_SERVER['REQUEST_URI']; //this would be /users/show/abc.json
2) Se puede utilizar el módulo de reescritura de Apache para redirigir todas las solicitudes de API a una especial Archivo PHP que los maneja. Dependiendo de su configuración de Apache, la url original solicitada (RESTful) se almacenará en una variable de servidor en PHP, creo que es $_SERVER['REQUEST_URI']
. Por supuesto, también podría pasar una variable $_GET[]
a PHP que contenía la URL RESTful.
.htaccess
RewriteEngine On
RewriteRule ^/api/([^\.]+).(xml|json|atom) api.php?url=$1&type=$2
api.php
$request_parts = explode('/', $_GET['url']); // array('users', 'show', 'abc')
$file_type = $_GET['type'];
$output = get_data_from_db(); //Do your processing here
//You can outsource to other files via an include/require
//Output based on request
switch($file_type) {
case 'json':
echo json_encode($output);
break;
case 'xml':
echo xml_encode($output); //This isn't a real function, but you can make one
break;
default:
echo $output;
}
3) Twitter (y muchas otras API) utilizar esto porque es una forma conveniente de suministrando el formato que una aplicación espera de una API. Todas las solicitudes API se redirigen a un solo archivo PHP que maneja la creación de todos los archivos y hace eco de sus contenidos en la salida. El archivo nunca se almacena en el servidor (a menos que esté en caché).
Buenas Recursos
Una nota o n RecessPHP. Sin duda es una gran herramienta y te animo a que lo mires (tal vez en su origen para tener una idea de cómo procesa las cosas), pero dicho esto, me parece un poco torpe. El hecho de que los nombres de ruta estén escritos en comentarios especiales parece muy poco PHP para mí. Me alejaría de esto, y no lo llamaría el marco perfecto, pero sin duda es un comienzo. ¡Buena suerte!
Las URL limpias no tienen nada que ver con las API REST. Son solo una buena manera de embellecer urls que de otra manera tendrían cadenas de consulta feas. Generalmente se implementan usando mod_rewrite para tomar la URL limpia y transformarla internamente de nuevo a una versión de cadena de consulta. –