Как спроектировать API отдыха для обработки нескольких разнородных ответов, вызванных одним запросом? - PullRequest
0 голосов
/ 08 февраля 2019

На самом деле это проблема дизайна.GET-запрос http://myserver/R1 приходит на мой сервер, запрашивая ресурс R1.Этот ресурс доступен на нескольких серверах ([s1, s2, s3, s4 ... sN] назовем его list1).Поэтому я пересылаю запрос этим серверам list1 и собираю их ответы.Ответ от этих разных серверов может быть успешным или неуспешным.Например, данные всех серверов с успешным ответом представлены как:

{
   "server" : "server name e.g. s1",
   "value" : "some value of R1"
}

Данные всех серверов с неуспешным ответом представлены как:

{
   "server" : "server name e.g. s3",
   "error_code" : "XXX",
   "error_msg" : "YYY"
}

Теперь мне нужно объединить объекты несколькихсервер в один массив объектов и вернуть этот массив клиенту.Так каков должен быть дизайн моего массива Json?

[
    {   "server" : "s2",    "value" : "some value of R1"    },
    {   "server" : "s4",    "value" : "some value of R1"    },
    {   "server" : "s1",   "error_code" : "1",   "error_msg" : "YYY"        },
    {   "server" : "s3",    "value" : "some value of R1"    },
    {   "server" : "s5",   "error_code" : "2",   "error_msg" : "YYY"        }
]

Должен ли я вернуть этот массив так, как он есть клиенту?или

[
    {   "server" : "s2",   "error_code" : "",   "error_msg" : "",   "value" : "some value of R1"        },
    {   "server" : "s4",   "error_code" : "",   "error_msg" : "",   "value" : "some value of R1"        },
    {   "server" : "s1",   "error_code" : "1",   "error_msg" : "YYY",   "value" : null      },
    {   "server" : "s3",   "error_code" : "",   "error_msg" : "",   "value" : "some value of R1"        },
    {   "server" : "s5",   "error_code" : "2",   "error_msg" : "ZZZ",   "value" : null      },
]

лучше.

...