Ну, для простых служб у вас есть один файл сценария (например, с именем index.php
) в качестве точки входа, которая отправляет различные пути к вашим функциям (что может быть, конечно, в других файлах PHP). Он вызывается с одним из путей, которые вы указали после имени сценария. В скрипте вы можете использовать $_SERVER['PATH_INFO']
для определения этого пути.
Вы можете поэкспериментировать с этим немного, сделав сценарий только с этим содержанием в нем:
<?php
phpinfo();
?>
Если вы запрашиваете этот скрипт в браузере с вашего веб-сервера, вы увидите все необходимые данные, напечатанные в хороший список. Прокрутите вниз до раздела PHP Variables, чтобы увидеть свой PATH_INFO
.
См http://php.net/manual/en/reserved.variables.server.php
EDIT2:
Кроме того, ограничение методов доступа к HTTP GET и POST делает вашу жизнь проще, потому что PHP имеет $_GET
и $_POST
переменные, но не, например, $_PUT
/$_DELETE
и тому подобное. Однако, вы можете отправить POST запросов со специальным переменным с указанием методы так, чтобы эмулировать PUT, DELETE, ГОЛОВУ или OPTIONS операций (например, _method=PUT
).
При поддержке других методов, чем GET и POST, использовать $_SERVER['REQUEST_METHOD']
, чтобы определить метод, используемый и читать данные, передаваемые вместе с запросом из специального «файл» php://input
(например, с file_get_contents('php://input')
).
EDIT:
Как отметил tdammers, Apache RewriteRules полезны, чтобы сделать ваш URL, довольно, в этом случае, чтобы скрыть имя скрипта, как это (в зависимости от местоположения вашего сценария, конечно):
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/api/index\.php(/|$)
RewriteRule ^/api/(.*)$ /api/index.php/$1 [QSA,L]