Как эффективно и правильно хранить и извлекать все варианты ответов сервера REST в mongodb - PullRequest
0 голосов
/ 12 сентября 2018

Рассмотрим сценарий, в котором MongoDB используется для сохранения ответов, отправленных серверами RESTful.Информация, полученная в ответ от сервера, сохраняется как объект ResponseEntity .Каков наилучший способ хранения и извлечения этого ответа с учетом упомянутых ниже критериев?

  1. Приложение должно быть настолько универсальным, насколько это возможно, поддерживающим эффективное хранение и поиск различных типов ответов сервера, таких какJSON, XML и все, что там может быть.
  2. Тела ответов в любом формате должны быть доступны для редактирования в приложении.
  3. Ответы могут быть от сотен различных API ReSTсерверы, такие как Facebook, LinkedIn, Twitter, Google Analytics, Zoho и т. д.
  4. Ответы должны сохраняться только при статусе 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]}>

Разбивая его, ответ имеет:

  1. HttpStatus

  2. Тело ответа в формате, указанном в заголовках ответов

  3. MultiValueMap заголовков.

Asпо течениюВ реализации ответ, полученный от сервера, выбирается как ResponseEntity<String> объект, и при хранении тело и заголовки разделяются.Тело извлекается из объекта ResponseEntity<String> как String и сохраняется как есть в MongoDB.Это также облегчает простые модификации строки.Заголовок, извлеченный из объекта ResponseEntity как объект HttpHeaders , хранится с использованием типа данных Object в MongoDB.

Как часть извлечения ответов, заголовки и телоизвлекается отдельно из базы данных, и объект ResponseEntity<String> является созданным , используя их вместе с HttpStatus .

Есть ли недостатки в приведенной выше реализации?Любое поведение сервера REST, о котором следует позаботиться при работе с его ответом, для которого вышеописанная реализация не будет работать?Любые предложения о том, как повысить надежность и эффективность этой функциональности веб-приложения?

...