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