Создание спокойного API и веб-сайта с помощью PHP


У меня есть PHP-приложение, которое я написал ранее, и в которое я хотел бы добавить API RESTful. Я также хотел бы расширить сайт, чтобы он больше походил на приложение Rails с точки зрения URL-адресов, которые вы вызываете, чтобы получить элементы в системе.

Есть ли какой-нибудь способ вызывать элементы в PHP простым способом без создания всевозможных папок и страниц индекса? Как я могу вызвать информацию на PHP без использования тега запроса GET?

Author: Dean Putney , 2009-07-17

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 это будет использовано для загрузки всего, что вам нужно.

 13
Author: going, 2009-07-17 04:43:01

Вы также можете рассмотреть возможность использования одной из фреймворков PHP со встроенной поддержкой REST, например CakePHP.

 2
Author: dhofstet, 2009-07-17 04:48:42

Краткое примечание в ответе Паскалю МАРТИНУ: Zend_Rest_Server не имеет абсолютно никакого отношения к REST. Они просто делают RPC с немного более приятными URL-адресами и называют его REST, чтобы он был более модным.

Если вы хотите отдохнуть, вам нужно будет немного поработать самостоятельно, так как я еще не нашел хорошую библиотеку ОТДЫХА для PHP. Поэтому проверьте $_SERVER['REQUEST_METHOD'], чтобы решить, что делать с вызываемым ресурсом и т. Д.

 2
Author: skrebbel, 2009-07-17 13:12:31

Проще всего, вероятно, использовать фреймворк, который предоставляет вам функции, ориентированные на ОТДЫХ. Я знаю, что Zend Framework делает это с классом Zend_Rest_Server, это позволяет легко создать сервер REST.

Я полагаю, что многие другие фреймворки делают то же самое.

Но, если у вас уже есть приложение, которое не использует фреймворк (или которое основано на фреймворке, который не встраивает такой класс), пара правил написания URL-адресов подойдет просто отлично; вы просто есть немного больше работы по сопоставлению URL-адресов/параметров с классами/методами:-(

 0
Author: Pascal MARTIN, 2009-07-17 05:34:52

Шаблон проектирования, который вы ищете, называется фронтальный контроллер.

В простейшей форме вы используете mod_rewrite для передачи входящих запросов и передачи их одному php-скрипту. Затем URL-адрес анализируется с помощью регулярных выражений и сопоставляется с различными действиями ответа. Однако сопоставление существующего приложения может потребовать тщательного переписывания.

Если вы хотите поиграть с этой концепцией, я рекомендую микрорамку Silex.

 0
Author: max, 2012-03-07 23:55:12