Для API (у меня есть фреймворк для этого), я склонен иметь структуру URL, которая выглядит следующим образом:
http://domain.com/api/[resource]/[id]/[subresource]
Я передаю все запросы на фронт-контроллерФайл .htaccess , который анализирует входящие запросы и передает запрос соответствующему контроллеру.Таким образом, мой index.php выглядит очень просто:
<?php
$request = explode('/', trim($_SERVER['REQUEST_URI'], '/'));
$resource_name = ucfirst($request[0]).'Controller';
$http_verb = strtolower($_SERVER['REQUEST_METHOD']);
$controller = new $resource_name;
$response = call_user_func_array(array($controller, $http_verb), array($request));
header('Content-Type: application/json');
echo json_encode($response);
Так что если вы вызываете http://domain.com/api/news,, то он попытается создать экземпляр класса с именем NewsController
, а если это запрос GET , то метод get()
этого класса или post()
для запроса POST и т. Д.Ответ на этот вызов затем возвращается клиенту в виде JSON.
Надеюсь, этого будет достаточно для начала работы.