1) Нет, если вы используете среду RESTful, такую как RecessPHP , или если вы используете правило mod_rewrite в файле .htaccess для перенаправления всех запросов API в один файл PHP (известный в качестве фронт контроллера).
.htaccess
RewriteEngine On
RewriteRule ^/api/ api.php
api.php
$request = $_SERVER['REQUEST_URI']; //this would be /users/show/abc.json
2) Вы можете использовать модуль перезаписи apache для перенаправления всех запросов api в специальный файл PHP, который их обрабатывает. В зависимости от вашей конфигурации apache, исходный запрошенный (RESTful) URL будет храниться в серверной переменной в PHP, я думаю, что это $_SERVER['REQUEST_URI']
. Конечно, вы также можете просто передать переменную $_GET[]
в PHP, содержащую 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 (и многие другие API) используют это, потому что это удобный способ предоставления формата, который приложение ожидает от API. Все запросы API перенаправляются в один файл PHP, который обрабатывает создание всех файлов и выводит их содержимое на выход. Файл никогда не сохраняется на сервере (если он не кэширован).
Хорошие ресурсы
Примечание о RecessPHP. Это, безусловно, отличный инструмент, и я бы посоветовал вам взглянуть на него (может быть, на его источник, чтобы понять, как он обрабатывает вещи), но, тем не менее, он кажется мне немного неуклюжим. Тот факт, что имена путей пишутся в специальных комментариях, кажется мне совсем не PHP. Я бы отошел от этого и не назвал бы это идеальной основой, но это, безусловно, начало. Удачи!