Рассмотрим сценарий, в котором MongoDB используется для сохранения ответов, отправленных серверами RESTful.Информация, полученная в ответ от сервера, сохраняется как объект ResponseEntity .Каков наилучший способ хранения и извлечения этого ответа с учетом упомянутых ниже критериев?
- Приложение должно быть настолько универсальным, насколько это возможно, поддерживающим эффективное хранение и поиск различных типов ответов сервера, таких какJSON, XML и все, что там может быть.
- Тела ответов в любом формате должны быть доступны для редактирования в приложении.
- Ответы могут быть от сотен различных API ReSTсерверы, такие как Facebook, LinkedIn, Twitter, Google Analytics, Zoho и т. д.
- Ответы должны сохраняться только при статусе HTTP
200 OK
.
Это типичный ответвыглядит как при преобразовании в строку:
<200,{birthday=10/30/1995, security_settings={secure_browsing=
{enabled=true}}, favorite_athletes=[{id=556787781118967, name=Kawai
Leonard}], favorite_teams=[{id=25781101980, name=San Antonio Spurs}],
id=12743794760832},{ETag=["7ac095dba856fe41a3f2d783"], Strict-Transport-
Security=[max-age=15552000; preload], x-fb-trace-id=[DGINCEt], x-fb-rev=
[4318280], x-app-usage=[{"call_count":0,"total_cputime":0,"total_time":0}],
Expires=[Sat, 01 Jan 2000 00:00:00 GMT], Content-Type=[application/json;
charset=UTF-8], facebook-api-version=[v2.0], Cache-Control=[private, no-
cache, no-store, must-revalidate], Pragma=[no-cache], Access-Control-Allow-
Origin=[*], Vary=[Accept-Encoding], X-FB-Debug=
[6ZufD3aKzLBGVFuxVL9w+PWkiMtV7ee6vUBjqVsz2VgE75OkHeFEbZmc9Uw==], Date=[Wed,
12 Sep 2018 16:52:57 GMT], Connection=[keep-alive]}>
Разбивая его, ответ имеет:
HttpStatus
Тело ответа в формате, указанном в заголовках ответов
MultiValueMap заголовков.
Asпо течениюВ реализации ответ, полученный от сервера, выбирается как ResponseEntity<String>
объект, и при хранении тело и заголовки разделяются.Тело извлекается из объекта ResponseEntity<String>
как String
и сохраняется как есть в MongoDB.Это также облегчает простые модификации строки.Заголовок, извлеченный из объекта ResponseEntity
как объект HttpHeaders , хранится с использованием типа данных Object
в MongoDB.
Как часть извлечения ответов, заголовки и телоизвлекается отдельно из базы данных, и объект ResponseEntity<String>
является созданным , используя их вместе с HttpStatus .
Есть ли недостатки в приведенной выше реализации?Любое поведение сервера REST, о котором следует позаботиться при работе с его ответом, для которого вышеописанная реализация не будет работать?Любые предложения о том, как повысить надежность и эффективность этой функциональности веб-приложения?