REST Web api-приложение для управления данными
Я не совсем понимаю, как управлять данными в разрабатываемом веб-приложении RESTful. Сколько данных должно быть сохранено на стороне клиента?
Для более конкретного примера:
Мое приложение отправляет письма из одной системы в другую. Я сохраняю письма на стороне сервера, используя сервер Sql. Для каждой буквы есть адресаты и источник, представленный объектом Address, содержащим полную информацию об адресах. Я не могу решить, как мне следует управлять данными адресов в моем приложении, если я:
загрузить все адреса в мой клиент при запуске и с каждой отправкой письма прикрепить весь список адресов к запросу? Запрос будет содержать больше данных и будет больше, но мне не нужно получать все станции на сервере
загружать клиенту только идентификаторы адресов и отправлять запросы с идентификаторами, а затем загружать их из базы данных на стороне сервера? Запросы будут содержать меньшее количество данных, но мне нужно будет получить все адреса на сервере
Должен ли я сохранять на клиенте только объект Address, представляющий его собственный адрес и идентификаторы других станций? То же, что 2, но мне не нужно получать адрес отправителя
Каковы плюсы / минусы каждого метода? Что бы вы выбрали, если бы количество станций было около 100 (без большого количества данных в каждом объекте)
Я не профессионал, поэтому, пожалуйста, поправьте меня, если что-то, что я сказал, было неправильно / глупая формулировка
Заранее спасибо.
1 ответ
Нет серебряной пули, которая работает во всех случаях, но я бы посоветовал вам сделать это следующим образом:
- Загрузить все адреса для клиента. Скорее всего, конечный пользователь предпочитает видеть подробную адресную информацию вместо бессмысленных идентификаторов
- После того, как пользователь выбрал пункт назначения, ваше приложение отправляет только идентификаторы на сервер
- Сервер должен принимать адресные данные по идентификаторам из БД
- Отправить письмо
Клиент не должен отправлять объект полного адреса, так как это может быть (случайно или преднамеренно) неправильно. Вам лучше всегда брать реальные и действительные данные из БД. Если вам нужно уменьшить нагрузку на БД, лучше использовать кэширование на стороне сервера. Пример:
- Создать репозиторий, который выбирает адреса из БД
- Создайте оболочку хранилища, которая получает данные из БД всего один раз, а затем сохраняет в памяти MemoryCahce.
- Используйте кэшированную оболочку в вашем приложении