Используйте 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 вы можете отправлять только изменения.
Если предположить,
/questions/10
что это правильный вопрос, то для взаимодействия с ним используется метод.POST, чтобы добавить к нему
PUT, чтобы создать или заменить его
GET для просмотра / запроса
и DELETE, чтобы хорошо .. удалить его.
URL не меняется.
источник
Я собираюсь рискнуть и предположить, что вы имеете в виду стандартные контроллеры для MVC, когда говорите URL-адреса "RESTful", поскольку ваши примеры могут считаться не-RESTful (см. Эту статью).
Поскольку Rails действительно популяризировал стиль URL-адресов, который, кажется, вас интересует, я предлагаю ниже действия контроллера по умолчанию, производимые ScaffoldingGenerator в Ruby on Rails. Они должны быть знакомы любому, кто использует приложение Rails.
Обычно вы строите это как:
источник
Вот отображение ваших текущих URL-адресов с использованием принципа REST:
Если вы определяете вопрос как ресурс, он должен иметь уникальный URL. Использование GET для его отображения (получения) - обычная практика. Это становится:
Теперь вы хотите, чтобы у вашего пользователя было другое представление того же ресурса, которое позволяет ему редактировать ресурс (возможно, с элементами управления формой).
Здесь есть два варианта: ваше приложение - это приложение (а не веб-сайт), тогда вам может быть лучше использовать JavaScript для преобразования ресурса в редактируемый ресурс на стороне клиента.
Если это веб-сайт, то вы можете использовать тот же URL-адрес с дополнительной информацией, чтобы указать другое представление, обычная практика выглядит так:
Это сделано для того, чтобы изменить вопрос, поэтому PUT - правильный метод:
Список вопросов на самом деле является родительским ресурсом вопроса, поэтому, естественно, он:
Теперь вам может понадобиться еще:
Тада :)
источник
Ваши четыре примера могут быть такими:
Чтобы добавить вопрос:
Сервер ответит:
источник