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?