Предоставление параметров запроса к базе данных через интерфейс REST - PullRequest
1 голос
/ 19 января 2010

У меня есть основы службы REST, со «стандартным» списком и глаголами GET / POST / PUT / DELETE, реализованными вокруг моих существительных.

Однако клиентская база, с которой я работаю, также хочет иметь более мощные операции. Я использую Mongo DB на сервере, и было бы легко выставить операцию «обновления». Эта страница описывает, как Mongo может делать обновления.

Было бы легко написать страницу, которая принимает пару JSON / XML / любые другие аргументы для «критериев» и «objNew» частей функции обновления Mongo. Может быть, я создаю страницу типа http://myserver.com/collection/update, которая принимает запрос POST (или PUT?) С телом запроса, содержащим эти данные. Очистите ввод для вредоносных запросов и обеспечения безопасности, и все готово. Кусок торта.

Мой вопрос: каков «лучший» способ выставить это RESTful способом? Очевидно, что подход, который я описал выше, не кошерный, потому что «обновление» не является существительным. Подобные вещи кажутся гораздо более подходящими для метода SOAP / RPC, но остальная часть службы уже использует REST через HTTP, и я не хочу, чтобы пользователи совершали два разных типа вызовов.

Мысли

Ответы [ 2 ]

2 голосов
/ 19 января 2010

Как правило, я бы обработал это как:

  • URL / коллекция
  • URL / коллекция / пункт

  • GET collection: возвращает представление ресурса коллекции

  • GET collection / item: возвращает представление ресурса элемента (необязательные параметры URI для типов содержимого: json, xml, txt и т. д.)

  • POST collection /: создает новый элемент (если с помощью XML я использую XSD для проверки)

  • PUT collection / item: обновить существующий элемент

  • УДАЛИТЬ коллекцию / элемент: Удалить существующий элемент

Это помогает?

1 голос
/ 20 января 2010

Поскольку, как вы знаете, он не подходит для REST, вам просто нужно приложить все усилия и придумать стандарт, чтобы он работал.Функциональность обновления Mongo настолько далека от REST, что я бы на самом деле разрешил PUT в коллекции.Игнорируйте параметры в моих примерах, я не слишком задумывался о них.

  • PUT collection? Set = {field: value}
  • PUT collection? Pop = {field:1}

Или:

  • PUT collection / pop? Field = 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...