Создание спокойного API и веб-сайта с помощью PHP
У меня есть PHP-приложение, которое я написал ранее, и в которое я хотел бы добавить API RESTful. Я также хотел бы расширить сайт, чтобы он больше походил на приложение Rails с точки зрения URL-адресов, которые вы вызываете, чтобы получить элементы в системе.
Есть ли какой-нибудь способ вызывать элементы в PHP простым способом без создания всевозможных папок и страниц индекса? Как я могу вызвать информацию на PHP без использования тега запроса GET?
5 answers
Если у вас есть какая-либо форма mod_rewrite, вы можете сделать это довольно легко с помощью файла .htaccess.
Если у вас есть что-то вроде этого:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
Он проверит, что файл, к которому вы пытаетесь получить доступ, еще не существует. (Скажем, у вас был файл hello.html что вам все еще нужны люди для доступа через http://yoursite.com/hello.html)
Затем, если файл еще не существует, он загрузит ваш index.php файл с остальной частью URL-адреса, сохраненного в URL-адресе переменная.
Это означает, что вы можете назвать что-то вроде этого http://yoursite.com/pages/edit/24 и он загрузится index.php с /страницами/редактировать/24 внутри переменной url.
Это должно помочь вам начать, и вам не понадобятся всевозможные папки и страницы индекса, просто mod_rewrite, файл .htaccess и index.php это будет использовано для загрузки всего, что вам нужно.
Вы также можете рассмотреть возможность использования одной из фреймворков PHP со встроенной поддержкой REST, например CakePHP.
Краткое примечание в ответе Паскалю МАРТИНУ: Zend_Rest_Server не имеет абсолютно никакого отношения к REST. Они просто делают RPC с немного более приятными URL-адресами и называют его REST, чтобы он был более модным.
Если вы хотите отдохнуть, вам нужно будет немного поработать самостоятельно, так как я еще не нашел хорошую библиотеку ОТДЫХА для PHP. Поэтому проверьте $_SERVER['REQUEST_METHOD']
, чтобы решить, что делать с вызываемым ресурсом и т. Д.
Проще всего, вероятно, использовать фреймворк, который предоставляет вам функции, ориентированные на ОТДЫХ. Я знаю, что Zend Framework делает это с классом Zend_Rest_Server
, это позволяет легко создать сервер REST.
Я полагаю, что многие другие фреймворки делают то же самое.
Но, если у вас уже есть приложение, которое не использует фреймворк (или которое основано на фреймворке, который не встраивает такой класс), пара правил написания URL-адресов подойдет просто отлично; вы просто есть немного больше работы по сопоставлению URL-адресов/параметров с классами/методами:-(
Шаблон проектирования, который вы ищете, называется фронтальный контроллер.
В простейшей форме вы используете mod_rewrite для передачи входящих запросов и передачи их одному php-скрипту. Затем URL-адрес анализируется с помощью регулярных выражений и сопоставляется с различными действиями ответа. Однако сопоставление существующего приложения может потребовать тщательного переписывания.
Если вы хотите поиграть с этой концепцией, я рекомендую микрорамку Silex.