Используйте URL-адреса для указания своих объектов, а не действий:
Обратите внимание, что вы впервые упомянули не RESTful:
/questions/show/<whatever>
Вместо этого вы должны использовать свои URL-адреса для указания своих объектов:
/questions/<question>
Затем вы выполняете одну из следующих операций с этим ресурсом.
ПОЛУЧИТЬ:
Используется для получения ресурса, запроса списка ресурсов, а также для запроса информации о ресурсе только для чтения.
Чтобы получить ресурс с вопросами:
GET /questions/<question> HTTP/1.1
Host: whateverblahblah.com
Чтобы перечислить все ресурсы для вопросов:
GET /questions HTTP/1.1
Host: whateverblahblah.com
ПОЧТА:
Используется для создания ресурса.
Обратите внимание, что следующее является ошибкой:
POST /questions/<new_question> HTTP/1.1
Host: whateverblahblah.com
Если URL-адрес еще не создан, вы не должны использовать POST для его создания при указании имени. Это должно привести к ошибке "ресурс не найден", потому что он еще не существует. Вы должны сначала РАЗМЕСТИТЬ ресурс на сервере. Вы можете возразить, что, создавая новый вопрос, вы также обновляете ресурс / questions, поскольку теперь он будет возвращать еще один вопрос в своем списке вопросов.
Вы должны сделать что-то вроде этого, чтобы создать ресурс с помощью POST:
POST /questions HTTP/1.1
Host: whateverblahblah.com
Обратите внимание, что в этом случае имя ресурса не указывается, вам будет возвращен URL-путь нового объекта.
УДАЛЯТЬ:
Используется для удаления ресурса.
DELETE /questions/<question> HTTP/1.1
Host: whateverblahblah.com
СТАВИТЬ:
Используется для создания ресурса или его перезаписи при указании URL-адреса ресурсов.
Для нового ресурса:
PUT /questions/<new_question> HTTP/1.1
Host: whateverblahblah.com
Чтобы перезаписать существующий ресурс:
PUT /questions/<existing_question> HTTP/1.1
Host: whateverblahblah.com
... Да они такие же. PUT часто описывается как метод «редактирования», поскольку, заменяя весь ресурс слегка измененной версией, вы редактируете то, что клиенты будут ПОЛУЧАТЬ, когда они сделают это в следующий раз.
Использование REST в HTML-формах:
Спецификация HTML5 определяет GET и POST для элемента формы .
Атрибут содержимого метода - это перечисляемый атрибут со следующими ключевыми словами и состояниями:
- Ключевое слово GET, сопоставление с состоянием GET, указывающее метод HTTP GET.
- Ключевое слово POST, сопоставление с состоянием POST, указывающее метод HTTP POST.
Технически спецификация HTTP не ограничивает вас только этими методами. Технически вы можете добавлять любые методы, которые захотите, однако на практике это не очень хорошая идея. Идея состоит в том, что все знают, что вы используете GET для чтения данных, поэтому это запутает ситуацию, если вы решите вместо этого использовать READ. Тем не менее ...
ПАТЧ:
Это метод, который был определен в формальном RFC. Он предназначен для использования, когда вы хотите отправить только частичную модификацию ресурса, он будет использоваться так же, как PUT:
PATCH /questions/<new_question> HTTP/1.1
Host: whateverblahblah.com
Разница в том, что PUT должен отправлять весь ресурс, независимо от того, насколько он велик по сравнению с тем, что на самом деле было изменено, в то время как PATCH вы можете отправлять только изменения.