URL Использования для определения объектов, не действий:
Примечание, что Вы сначала упомянули, не является УСПОКОИТЕЛЬНЫМ:
/questions/show/<whatever>
Вместо этого необходимо использовать URL для определения объектов:
/questions/<question>
Тогда Вы выполняете один из ниже операций на том ресурсе.
<час>ДОБЕРИТЕСЬ:
Используемый для получения ресурса запросите список ресурсов, и также запрашивать информацию только для чтения о ресурсе.
Для получения ресурса вопроса:
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 для создания его при определении имени. Это должно привести к ресурсу, не найденному ошибкой, потому что еще не существует. Необходимо ПОМЕСТИТЬ ресурс на сервер сначала. Вы могли утверждать, что путем создания нового вопроса, также обновляете / ресурс вопросов, поскольку он теперь возвратил бы еще один вопрос в своем списке вопросов.
необходимо сделать что-то вроде этого для создания ресурса с помощью 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
... Да, они - то же. ПОМЕЩЕННЫЙ часто описывается как метод 'редактирования', как путем замены всего ресурса с немного измененной версией, Вы отредактировали то, что ПОЛУЧАТ клиенты, когда они затем сделают.
<час>Используя REST в HTML-формах:
спецификация HTML5 определяет, ДОБИРАЮТСЯ и POST для элемента формы .
<час>атрибут содержания метода является перечислимым атрибутом со следующими ключевыми словами и состояниями:
- ключевое слово ДОБИРАЕТСЯ, отображение на состояние ДОБИРАЕТСЯ, указывая, что HTTP ПОЛУЧАЕТ метод.
- POST ключевого слова, отображаясь на государственный пост, указывая на метод POST HTTP.
Технически, Спецификация HTTP не ограничивает Вас только теми методами. Вы технически свободны добавить любые методы, которые Вы хотите, на практике хотя, это не хорошая идея. Идея состоит в том, что все знают, что Вы используете, ДОБИРАЮТСЯ для чтения данных, таким образом, они перепутают вопросы, если Вы решите вместо этого использовать ЧТЕНИЕ. Это сказало...
ПАТЧ:
Это - метод, который был определен в формальном RFC. Это разработано к используемому для того, когда Вы хотите отправить просто частичную модификацию в ресурс, это использовалось бы во многом как ПОМЕЩЕННЫЙ:
PATCH /questions/<new_question> HTTP/1.1
Host: whateverblahblah.com
различие ПОМЕЩАЕТСЯ, должен отправить весь ресурс, неважно, как большой это сравнивается с тем, что на самом деле изменяется, пока ПАТЧ можно отправить всего изменения.
Принятие /questions/10
является допустимым вопросом тогда, метод используется для взаимодействия с ним.
POST для добавления к нему
ПОМЕЩЕННЫЙ, чтобы создать или заменить его
ДОБИРАЮТСЯ, чтобы просмотреть/запросить его
и УДАЛИТЬ к хорошо.. удалите его.
URL не изменяется.
Я собираюсь рискнуть и предположить, что Вы, что Вы имеете в виду, - то, что является стандартными контроллерами для MVC, когда Вы говорите "УСПОКОИТЕЛЬНЫЕ" URL, так как Ваши примеры можно было считать не - "УСПОКОИТЕЛЬНЫМИ" (см. этот статья).
, Так как направляющие действительно популяризировали стиль URL, которым Вы, кажется, интересуетесь, я предлагаю ниже действий контроллера по умолчанию, произведенных ScaffoldingGenerator в Ruby on Rails. Они должны быть знакомы любому использующему приложение направляющих.
действия лесов и представления: индекс, список, показывает, новый, создает, редактирует, обновляет, уничтожает
Обычно, Вы создали бы это как:
http://application.com/controller/<action>/<id>
Вот отображение Ваших текущих URL с помощью остальных принцип:
/question/show/<whatever>
, Если Вы идентифицируете вопрос как ресурс, тогда он должен иметь уникальный URL. Используя ДОБИРАЮТСЯ для отображения, это (получите его), обычная практика. Это становится:
GET /question/<whatever>
<час> /question/edit/<whatever>
Теперь Вы хотите, чтобы у Вашего пользователя было другое представление того же ресурса, который позволяет ему редактировать ресурс (возможно, со средствами управления формой).
Две опции здесь, Ваше приложение является приложением (не веб-сайт), тогда можно лучше использовать JavaScript для преобразования ресурса в доступный для редактирования ресурс ono сторона клиента.
, Если это - веб-сайт, то можно использовать тот же URL с дополнительной информацией для определения другого представления, обычная практика, кажется:
GET /question/<whatever>;edit
<час> /question/update/<whatever> (this is the post back url)
Это должно изменить вопрос, таким образом ПОМЕСТИТЬ, корректный метод для использования:
PUT /question/<whatever>
<час> /question/list (lists the questions)
список вопроса является на самом деле родительским ресурсом вопроса, таким образом, это естественно:
GET /question
<час> Теперь Вам, возможно, понадобится еще немного:
POST /question (create a new question and returns its URL)
DELETE /question/<whatever> (deletes a question if this is relevant)
Tada:)
Ваши четыре примера могут быть такими:
GET /questions/123
POST (or PUT) /questions/123 q=What+is+the+meaning+of+life
POST (or PUT) /questions/123 q=What+is+the+meaning+of+life
GET /questions
Чтобы добавить вопрос:
POST /questions q=What+is+the+meaning+of+life
Сервер ответит:
200 OK (or 201 Created)
Location: /questions/456