Дизайн системы: как мне разработать RESTful API, который позволяет асинхронно запрашивать результаты

Мне нужно создать /search API, который позволяет кому-то отправлять POST и получать идентификатор, который можно запросить позже через отдельный /results API.

Я просмотрел методы Spring:

DeferredResult

@Async

но ни один из них не демонстрирует возврат идентификатора из поиска. Мне нужна система, которая запоминает идентификатор и ссылается на него, когда кто-то вызывает /results API для получения конкретных результатов поиска.

Есть ли примеры приложений Spring, делающих это?


person Wayneio    schedule 17.07.2019    source источник


Ответы (1)


Вы должны помнить, что службы Restful не имеют состояния, поэтому не рекомендуется хранить состояния результатов поиска на сервере.

Одним из решений может быть сохранение состояний поиска в базе данных (SQL/NoSQL) и использование поддержки Spring Cache для сокращения времени отклика.

Когда пользователь запрашивает новый поиск с помощью /search, на сервере вы должны сгенерировать идентификатор, подготовить результаты и сохранить их в базе данных, а затем отправить новый идентификатор клиенту. Позже клиент должен запросить его результаты, используя /results/{searchId}.

Пожалуйста, дайте мне знать, если вы будете использовать это возможное решение, и я поделюсь с вами примером на Github.

person eHayik    schedule 17.07.2019