如何设计一个Rest API来处理由单个请求引起的多个异构响应?

时间:2019-02-08 09:07:36

标签: json rest api web-applications error-handling

实际上这是一个设计问题。 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      },
]

更好。

0 个答案:

没有答案