2011-12-28 2 views
1

Я новичок в веб-сервисах RESTful. У меня есть следующие 2 вопроса:2 вопроса о веб-службах RESTful

  1. ли GET, POST, DELETE, PUT, TRACE, HEAD, OPTIONS, только глаголы в Http, что я могу использовать для RESTful веб-служб?

  2. Как создать и использовать пользовательский глагол?

Я использую Java и Джерси для создания своих веб-сервисов RESTful.

+0

Какой возможный глагол вам понадобится за пределами GET, POST, PUT и DELETE? Пожалуйста, объясни. –

+1

, выходящий за пределы спецификации HTTP путем создания пользовательских глаголов, сделает вашу службу не HTTP-совместимой, что может вызвать непредвиденные проблемы в будущем (например, интероперабельность). Кроме того, большинство разработчиков никогда не выйдут за рамки GET и POST, поэтому было бы интересно узнать, почему вы считаете, что вам нужно что-то новое – tomfumb

+0

Чтобы быть честным, я новичок в веб-сервисах. Итак, у меня, наверное, много заблуждений. Но предположим, что я хочу предоставить 10 различных действий. Тогда как я могу предоставить 10 действий только с 7 глаголами? Разве каждое действие не подпадает под отдельный глагол? Или я ошибаюсь и могу использовать условные выражения для предоставления нескольких действий под одним глаголом? В целом, как другие разрабатывают свое приложение таким образом, что им не нужны дополнительные глаголы, даже если им необходимо обеспечить 100 различных действий? –

ответ

3

Ответ на вопрос 1 есть, да, поскольку они ограничены спецификацией HTTP. Однако, как правило, большинство приложений REST используют только GET и POST, поскольку они наиболее широко поддерживаются всей инфраструктурой Интернета. И тогда ответ на второй вопрос - нет, вы не можете создать собственный глагол.

То, что вам нужно учитывать при использовании HTTP-глаголов, заключается в том, что GET не должен иметь побочных эффектов, так как клиент может повторно отправить GET в любое время (в случае обнаружения сбоя связи). Однако POST может быть отправлен клиентом не более одного раза, поэтому его следует использовать для всего, что вызывает изменение, которое невозможно повторить (например, вставить).

Обычно вы определяете, какой «глагол» вы хотите в своем приложении как часть URL-адреса, а не как HTTP-глагол.

+0

Спасибо Фрэнсис. В этом есть смысл. –

+0

Пожалуйста, [примите] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work), если вам это нравится :) –

+1

Я не могу придумать, почему вам не нужно «добавлять " глагол. По крайней мере, вы сделаете это сложным для ваших клиентов использовать многие из фреймворков там для создания вызовов webservice, поскольку эти фреймворки построены вокруг стандартных HTTP-глаголов. Если у вас есть время, и вы хотите узнать, что HTTP может сделать для вас, я настоятельно рекомендую прочитать «REST in Practice: Hypermedia and Systems Architecture» Джима Уэббера, Саваса Парастатидиса и Яна Робинсона. Я действительно не знал HTTP, пока не проработал эту книгу. –

0

Тогда как я могу предоставить 10 действий только с 7 глаголами?

Идея веб-сервисов, чтобы сосредоточиться на объектов, а не глаголы.

Ваши действия как "Create" ("POST"), "Получить" ("GET"), "Update" ("PUT") или "Удалить" ("DELETE") в объекты.

Не каждое действие проходит под отдельным глаголом?

Нет. У вас могут быть все объекты, которые вы хотите. Вам нужны только четыре глагола для создания, поиска, изменения и удаления объектов.

Или я ошибаюсь и могу использовать условные обозначения, чтобы обеспечить несколько действий под одним глаголом?

№ Вы можете создать запрос на создание («POST»), который, в свою очередь, может создать несколько отдельных объектов.

В целом, как другие проектируют свое приложение таким образом, что им не нужны дополнительные глаголы, даже если им необходимо обеспечить 100 различных действий?

Вы фокусируетесь на объектах . Объекты создаются, извлекаются, обновляются и удаляются.

Смежные вопросы