REST Web api-приложение для управления данными

Я не совсем понимаю, как управлять данными в разрабатываемом веб-приложении RESTful. Сколько данных должно быть сохранено на стороне клиента?

Для более конкретного примера:

Мое приложение отправляет письма из одной системы в другую. Я сохраняю письма на стороне сервера, используя сервер Sql. Для каждой буквы есть адресаты и источник, представленный объектом Address, содержащим полную информацию об адресах. Я не могу решить, как мне следует управлять данными адресов в моем приложении, если я:

  1. загрузить все адреса в мой клиент при запуске и с каждой отправкой письма прикрепить весь список адресов к запросу? Запрос будет содержать больше данных и будет больше, но мне не нужно получать все станции на сервере

  2. загружать клиенту только идентификаторы адресов и отправлять запросы с идентификаторами, а затем загружать их из базы данных на стороне сервера? Запросы будут содержать меньшее количество данных, но мне нужно будет получить все адреса на сервере

  3. Должен ли я сохранять на клиенте только объект Address, представляющий его собственный адрес и идентификаторы других станций? То же, что 2, но мне не нужно получать адрес отправителя

Каковы плюсы / минусы каждого метода? Что бы вы выбрали, если бы количество станций было около 100 (без большого количества данных в каждом объекте)

Я не профессионал, поэтому, пожалуйста, поправьте меня, если что-то, что я сказал, было неправильно / глупая формулировка

Заранее спасибо.

1 ответ

Решение

Нет серебряной пули, которая работает во всех случаях, но я бы посоветовал вам сделать это следующим образом:

  1. Загрузить все адреса для клиента. Скорее всего, конечный пользователь предпочитает видеть подробную адресную информацию вместо бессмысленных идентификаторов
  2. После того, как пользователь выбрал пункт назначения, ваше приложение отправляет только идентификаторы на сервер
  3. Сервер должен принимать адресные данные по идентификаторам из БД
  4. Отправить письмо

Клиент не должен отправлять объект полного адреса, так как это может быть (случайно или преднамеренно) неправильно. Вам лучше всегда брать реальные и действительные данные из БД. Если вам нужно уменьшить нагрузку на БД, лучше использовать кэширование на стороне сервера. Пример:

  1. Создать репозиторий, который выбирает адреса из БД
  2. Создайте оболочку хранилища, которая получает данные из БД всего один раз, а затем сохраняет в памяти MemoryCahce.
  3. Используйте кэшированную оболочку в вашем приложении
Другие вопросы по тегам