Чем заменить сессии в RESTful приложении?

День добрый.

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

Проблема в том, что из самого принципа REST следует что каждый запрос к серверу должен быть самодостаточным, содержать в себе всю необходимую информацию для его обработки, т.е сервер не должен хранить никакие сессионные данные. Я использую ASP.NET WEB API и в связи с этим здесь даже не доступны сессии(это можно обойти, но это будет хак). Везде где ни читал, пишут что если есть необходимость использовать сесии в REST-приложении, то вам нужно перепроектировать свое приложение. Но как именно никто не говорит, все умные, все пишут статьи, но только в теории.

Вопрос: как можно реализовать требуемое, не прибегая к хранению состояния на бекэнде между запросами? Я не прошу готовое решение, натолкните на мысль если знаете как решить вопрос.
  • Вопрос задан
  • 2619 просмотров
Пригласить эксперта
Ответы на вопрос 2
nazarpc
@nazarpc
Open Source enthusiast
Хранить состояние в БД, подключаться к ней можно откуда угодно. Преимущество RESTful приложений в том, что отсутствия состояния на сервере позволяет масштабировать систему при необходимости простым клонированием нод, так как все ноды равноправны. Хранение сессий в БД этому никак не мешает.
Ответ написан
Комментировать
uaKorona
@uaKorona
Front-End разработчик
Если я правильно понял, то вы реализуете функциональность, позволяющую вашему пользователю загрузить определенное количество фотографий. Это предполагает, что вы можете идентифицировать пользователя каждый раз, когда он загружает файлы.
Если это так, то ваш бекэнд может идентифицировать пользователя при каждом запросе и получить из базы данных информацию о том, сколько для этого пользователя уже было загружено фотографий.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы