Создание RESTful API и веб-сайта с PHP - PullRequest
3 голосов
/ 17 июля 2009

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

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

Ответы [ 5 ]

13 голосов
/ 17 июля 2009

Если у вас есть какая-то форма 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 с / pages / edit / 24 внутри переменной url.

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

2 голосов
/ 17 июля 2009

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

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

2 голосов
/ 17 июля 2009

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

0 голосов
/ 08 марта 2012

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

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

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

0 голосов
/ 17 июля 2009

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

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

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

...