Резидентное решение RESTful, используемое с backbone.js... в PHP?
Я предваряю это, сказав, что я дрянной программист, я уверен, что то, что я хочу сделать, может быть сделано в 10 строках node или Rails или что-то еще, но PHP - это то, что у меня есть доступны.
Итак, я надеюсь найти простую библиотеку PHP, которая обертывает вызовы базы данных в API, который похож на модель RESTful.
У меня не было большого успеха, пытаясь найти такую вещь - поиск PHP CRUD
или PHP REST
отображает несколько миллионов страниц, и я не знаю, как их фильтровать.
Я действительно стараюсь, чтобы все было здесь просто, я не хочу иметь такую большую платформу, как Zend или что-то в этом роде. Модели, с которыми я имею дело в Backbone, действительно просты. Я просто хочу отправить GET
, скажем, /notes/3
или POST
, на /notes
и т.д., И PHP сделает правильную вещь в базе данных.
Возможно, я слишком много спрашиваю, но мне кажется, что это то, что предоставляют другие среды, такие как Rails. Какие-либо предложения? ТИА...
Ответы
Ответ 1
EDIT Ноябрь 2018: Хотя я бы не стал стучать CodeIgniter, теперь Laravel (в настоящее время 5,5) я использую структуру.
Вот хорошая статья, в которой излагаются причины, по которым я использую Laravel.
Чтобы начать прыжок, я рекомендую Laracasts. Это обучающая услуга подписки на видео, которая подробно рассказывает о том, как использовать Laravel (и другие связанные с веб-разработчиками вещи).
ОРИГИНАЛЬНЫЙ ОТВЕТ:
Codeigniter, для меня это самый простой из Rails-подобных фреймворков. Это голые кости, и вы можете легко создавать CRUD-приложение с нуля.
Самая большая проблема с запуском собственного приложения - это безопасность. Codeigniter может помочь вам создать менее уязвимый сайт, защищая вас от многих общих угроз безопасности, например, напрямую используя массивы $_POST и не фильтруя ваши данные. Не говоря уже о многих вспомогательных классах, которые он предлагает, таких как проверка формы.
Вы можете просмотреть документацию на своем веб-сайте. Он очень прост в использовании, пока вы помните, что навигация скрыта в верхней части каждой страницы.: D
Ответ 2
Вы понимаете, как CRUD работает внутри страны? С точки зрения PHP это может быть так же просто, как наличие оператора switch над каждой возможностью вызова REST.
Смотрите эту страницу здесь:
http://www.codethinked.com/building-epic-win-with-backbone-js
Перейти к разделу "Подключение к серверу".
Ваш PHP script просто должен удовлетворить эти требования.
Простой код прототипа:
switch($_SERVER['REQUEST_METHOD']){
case 'POST':
// create new item
break;
case 'GET':
// get item(s)
break;
case 'PUT':
// update item
break;
case 'DELETE':
// delete item
break;
}
Вам также потребуется настроить файл .htaccess
следующим образом (для обращения к несуществующим URL-адресам):
# Turn on rewrite engine and redirect broken requests to index
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L,QSA]
</IfModule>
URL-адрес, такой как http://mysite.com/1
, не существует, поэтому вам нужно маршрутизировать.
Изменить: Если вы планируете использовать PUT или DELETE в форматах HTML, забудьте об этом. Начиная с написания этого, он не был принят в HTML5, и почти все браузеры не поддерживают это. Мое "исправление" этого заключается в использовании GET
для GET
запросов и POST
для всех остальных (POST
, PUT
и DELETE
). Пример:
<form action="POST" action="/users/5">
<input type="hidden" name="method" value="DELETE"/>
<button>Delete User #5</button>
</form>
Это, однако, не проблема с AJAX, поскольку, по-видимому, вы можете установить метод XMLHttpRequest на все, что хотите, без проблем.
Ответ 3
В PHP есть много restfull фреймворков, посмотрите здесь и здесь.
Мне лично нравится безжизненная структура, но для этого вам нужен PHP 5.3.
Также есть много поддержки Tonic и Recess кажется довольно интересным.
Кроме того, все стандартные фреймворки имеют некоторую поддержку для отдыха (zend, воспламенитель кода, symfony и т.п.)
Вы должны найти подходящий вариант.
Также, если у вас уже есть ваши запросы mysql, вы можете преобразовать результаты mysql непосредственно в json следующим образом:
function recordSetToJson($mysql_result) {
$rs = array();
while($rs[] = mysql_fetch_assoc($mysql_result)) {
// you don´t really need to do anything here.
}
return json_encode($rs);
}
После этого довольно легко связать с URL-адресами.
От: Преобразование записи MySQL в строку JSON в PHP
Ответ 4
Вы можете использовать silex https://github.com/fabpot/Silex простую структуру на основе симфонии 2. С помощью Silex вы можете легко маршрутизировать и отображать действие.
У вас есть доступ к основному элементу CRUD, и вы можете вызвать функцию с компонентом URL.
В документации есть несколько примеров:
http://silex-project.org/doc/usage.html
Ответ 5
новое решение REST api
примеры
http://www.apifysnippets.com/
код
https://github.com/apify
учебное пособие
http://blog.fedecarg.com/2011/09/11/building-a-restful-web-api-with-php-and-apify/
UPDATE:
другое решение для отдыха для PHP:
http://luracast.com/products/restler/
:)
Ответ 6
вы можете посмотреть Slim:
http://www.slimframework.com/
его определенно легкий вес и может дать вам то, что вам кажется, что вы ищете, легко развернутый бэкэнд RESTful с php.