Использует ли PHP MVC Framework Agavi Crud, соответствующий отдыху?

StackOverflow https://stackoverflow.com/questions/1314862

Вопрос

Framework Agavi использует запрос PUT для создания и публикации для обновления информации. Обычно в состоянии это используется наоборот (часто ссылаясь на добавление информации при замене всей записи данных).

Если я правильно это понимаю, важная проблема заключается в том, что PUT должен быть идентифицированным, в то время как POST не имеет такого требования. Поэтому я раните, как создание новой записи может быть идентифицированным (т.е. множественный запрос не приводит к нескольким творениям записи), в частности, когда обычно ORM использует идентификатор в качестве основного ключа, и идентификатор новой записи не будет известен Для клиента (так как он автоэкранируется в базе данных), следовательно, не может быть частью запроса. Как Агави сохраняет требование идапотенности в свете этого для запроса пут.

Спасибо.

Это было полезно?

Решение

Поместить можно использовать как для создания, так и для обновления полных записей. Сообщение обычно используется для частичных обновлений и связанных с ними операций, а также для создания нового типа записи на сервере без указания URL -адреса для ресурса (например, Post to /ripts /23 /Comments возвращает статус 201 и местоположение: /Статьи /23/Комментарии/283136 заголовок). Таким образом, в вашем случае (с идентификатором последовательности/автоинскрущения) вы будете использовать этот подход.

Однако HTML (и, следовательно, веб -формы) отличается. Он знает только Get и Post, не удаляйте и не ставите. Для операций по удалению и обновлению он перегружает метод POST.

Вот почему Агави, по умолчанию, карты публикуются, чтобы «написать» и получить «Читать» - это самый распространенный вариант использования, и «чтение» и «написать» были выбраны, потому что они относительно нейтральны, а также представляют безопасность Аспекты GET VS POST (безопасность, как в «GET можно назвать без побочных эффектов» и Blah).

Вы можете изменить картирование глаголов для реализации AgaviwebRequest на Factories.xml; Обратитесь к списку рассылки пользователей Agavi или каналу IRC, если вам нужна помощь с этим (или спросите здесь). Многие люди на канале IRC также очень опытны с дизайном схемы URL, если вам понадобится дополнительная помощь в создании вашего API.

Другие советы

Вместо того, чтобы думать о PUT Как создание, думайте об этом как о «положении». Вы кладете ресурс в URI (то есть отправьте весь ресурс в URI).

PUT http://example.com/articles/1

Если вы повторяете это (отправите тот же весь ресурс в тот же URI), вы получите тот же результат, и вы не изменили ресурс в этом URI, это то, что делает его идентифицированным.

Если внедрение Агави PUT Тогда он реализует PUT правильно. В противном случае это не так.

Поместить можно использовать для создания ресурса, за исключением того, что, если ресурс уже существует (или уже был создан в предыдущем путке), он просто обновит его. POST не должен обновлять ресурсы, однако, если это простой CRUD. Обратите внимание, что глаголы HTTP не имеют определенного отображения с определенными действиями, поскольку они полезны для гораздо большего, чем просто CRUD.

Также обратите внимание, что этот вопрос не имеет ничего общего с отдыхом - просто правильное использование HTTP. Поэтому, пожалуйста, удалите тег остального.

У меня была эта проблема раньше. Это может быть решено Изменение заводов.xml

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top