REST и большие запросы к базе данных

Как все мы знаем, веб-служба ReST не может поддерживать состояние - это проблема для меня сейчас, когда я рассматриваю большие транзакции с базой данных, и мне интересно, можете ли вы помочь.

Мой веб-сервис ReST выполняет одну важную роль - выполняет CRUD-операции с базой данных. Проблема в том, что если мне нужно запросить таблицу с тысячами строк и отправить ее обратно клиенту в виде XML - это не хорошо. Весьма неэффективно продолжать запрашивать тысячи записей, НО вы не можете выполнять частичные транзакции (например, используя ключевое слово ROWNUM в Oracle) с веб-службой REST. Так как же это обойти?

Один из возможных способов получить записи из таблицы 100 за один раз:

http://mywebservice/employees/0/100

Я держу состояние для последнего поданного запроса, т.е. 100

следующий запрос будет:

http://mywebservice/employees/101/200

и так далее. Но разве это строго успокоительно?

1 ответ

Решение

Вы упомянули CRUD, но ваш пример выглядит только для чтения. Почему бы вам не ввести пейджинг?

# items 0 to 99
GET /employees?page=0&size=100
# items 100 to 199
GET /employees?page=1&size=100

Не ясно, какое состояние вы имеете в виду в своем примере. Говоря об API Restful через HTTP, да, HTTP сам по себе является протоколом без сохранения состояния, но в целом система, безусловно, имеет состояние, которое может меняться со временем (например, при выполнении действия записи в режиме POST).

Может быть, вы можете привести пример записи действий (вы упомянули транзакции), которые вы пытаетесь выставить через Restful API?

Другие вопросы по тегам