Создание RESTful API и веб-сайта с PHP

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

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

Ответы на вопрос(5)

передний контроллер.

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

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

Решение Вопроса

вы можете сделать это довольно легко с помощью файла .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 с / pages / edit / 24 внутри переменной url.

Это должно помочь вам начать работу, и вам не понадобятся все виды папок и индексных страниц, только mod_rewrite, файл .htaccess и index.php, которые будут использоваться для загрузки всего, что вам нужно.

предоставляющую вам REST-ориентированные функциональные возможности. Я знаю, что Zend Framework делает это с классомZend_Rest_Server, что позволяет легко создать REST-сервер.

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

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

Zend_Rest_Server не имеет абсолютно никакого отношения к REST. Они просто делают RPC с немного более приятными URL-адресами и называют его REST, чтобы он был более модным.

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

 17 июл. 2009 г., 15:14
Ах, я был неправ: CakePHP на самом деле очень хорошо подходит для REST. Хотя он имеет ужасный слой ORM, но хорошо :-)

ймворков со встроенной поддержкой REST, напримерCakePHP.

Ваш ответ на вопрос