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

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

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

5 ответов

Решение

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

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

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

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

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

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

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

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

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

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

Другие вопросы по тегам