Веб-сервисы REST, только для доступа к базе данных? - PullRequest
2 голосов
/ 01 ноября 2010

Я читал о веб-службах REST и хотел бы внедрить собственную службу отдыха.

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

Я хочу создать службу REST, которая позволяет передавать в ресурс большую строку и различные другие параметры и возвращать набор результатов xmlназад.Ничего не создается или не обновляется в базе данных, ничего не извлекается из базы данных.Передача данных в сложную процедуру обработки для последующего возврата результатов.

Моя проблема заключается в том, какой VERB я использую?

Я чувствую, что должен использовать глагол GET, чтобы соответствовать лучшимпрактики, но запрос иногда может быть очень большим, и передача его в строку запроса является практической.

Это оставляет меня с POST.Кажется, это соответствует тому, чего я хочу достичь, но я думаю, что это снова отрывается от лучших практик REST! ​​

Можно ли использовать REST только при желании взаимодействовать с базой данных?

Должен ли я отказатьсяидея использования rest и создания службы SOAP?

ОБНОВЛЕНИЕ Моя служба REST состоит в том, чтобы анализировать статьи и возвращать отчеты по ключевым словам для данной статьи.Учитывая это, ресурсом являются «ключевые слова», а POST возвращает полный отчет.Я думал тогда о втором URI ключевых слов / рекомендуется, POST к этому вернет несколько рекомендуемых ключевых фраз представленной статьи.Соответствует ли это REST?

Ответы [ 4 ]

4 голосов
/ 01 ноября 2010

REST не требует базы данных, если факт REST не имеет ничего общего с базами данных.

Сценарий, который вы описываете, - это именно то, для чего предназначен POST. Цитирование из последней версии спецификации HTTP :

Метод POST используется для запроса что исходный сервер принимает представительство в заявке как данные, которые будут обработаны целью resource.resource.

Вы можете сделать что-то вроде:

POST /ArticleProcessor
Content-Type: text/plain

для отправки текста вашей статьи, и ответ может быть:

Status: 200 OK
Content-Type:application/xhtml

<html>
<title>Results of keyword processing</title>
<body>
<a rel="FullReport" href="/reports/2343434/full">Full Report</a>
<a rel="TopKeywords" href="/reports/2343434/top">Top Keywords</a>
</body>
</html>
1 голос
/ 01 ноября 2010

Помните, что REST, аналогично SOAP, XML-RPC и т. Д., Описывает только интерфейс, а не реализацию приложения, предоставляющего этот интерфейс.Нет причины, по которой REST следует использовать только в сценарии базы данных CRUD.

Я бы использовал следующий подход к вашей проблеме:

Позвольте клиенту отправлять свои данные через POSTс параметрами POST («большая строка и различные другие параметры») к универсальному URI (например, http://example.com/processor) и возвращает URI результирующего ресурса (например, http://example.com/results/<unique-id>).Теперь клиент может GET получить результаты "сложной процедуры обработки".

0 голосов
/ 01 ноября 2010

Я бы придерживался REST, и если у вас действительно есть, используйте метод POST.Нет REST не только для баз данных.Однако он должен быть очень простым в использовании без SOAP.Многие из задач, которые SOAP пытается выполнить, такие как аутентификация, могут быть выполнены через прямой http.Идея заключается в том, что REST легок и отзывчив, прост в понимании и использовании.ОТДЫХ Я бы описал как разговор с пожилой тетей, которая постоянно забывает, кто вы.Возможно, когда вы запрашиваете приложение REST, вам может потребоваться разбить его на существительные и глаголы, например, запрос к ресурсу человека или ресурсу места, вместо того, чтобы пытаться запросить место и человека одновременно, разделите ихзадать каждому ресурсу свой запрос.Это делает протокол болтливым, делая это таким образом, но если вы действительно обеспокоены сетевым трафиком, то я бы выбрал XML-RPC или SOAP.

0 голосов
/ 01 ноября 2010

Вы можете взять «лучшие практики» с небольшим количеством соли. Я не уверен, что кого-то действительно волнует, влияет ли POST на базу данных или нет, если он правильно выполняет любую задокументированную вами операцию.

Пока ваши пользователи знают, какое поведение ожидать, вы будете в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...