REST API设计-有关集合中项目的附加信息

REST API设计-有关集合中项目的附加信息,rest,api,Rest,Api,我在端点/服务器上有一个集合,返回有关所有服务器的信息: { uid: "5t7yu8i9io0op", service_name: "Service Test", dc: "dc1", sync: true } 这是一个只需要从后端命中db的简单端点。 但是服务器有很多关于它们的附加信息,例如健康状况(后端需要做更多的工作)。所以,如果我想检查一台服务器的运行状况,我点击endpoint/servers/:uid/health,得到: { overal

我在端点/服务器上有一个集合,返回有关所有服务器的信息:

{
    uid: "5t7yu8i9io0op",
    service_name: "Service Test",
    dc: "dc1",
    sync: true
}
这是一个只需要从后端命中db的简单端点。 但是服务器有很多关于它们的附加信息,例如健康状况(后端需要做更多的工作)。所以,如果我想检查一台服务器的运行状况,我点击endpoint/servers/:uid/health,得到:

{
    overall_status: "HEALTH_OK",
    warnings: [],
    errors: []
}

但现在我的问题是,我希望从所有服务器获得健康检查,那么这样的API应该是什么样子呢?应该是/servers/health、/healthchecks吗?或者它应该可以嵌入主集合中,如:/servers?health=true?

假设:服务请求可能知道服务器名称、ID或主机名。为了简洁起见,让我们称之为
serverId

然后你可以像这样设计你的api

您的问题的建议解决方案

/servers/health/{serverId}
代替serverId,传递一个类似“ALL”的文本,您就知道api将如何响应

对于大多数交互端点,创建此请求非常简单,而且在理想情况下,它应该在不到1秒的时间内返回响应

附加用例

该端点导致了另一个场景的潜在用例,如果需要对已识别的服务器子集进行健康检查怎么办?

在{serverId}的端点请求中使用文本“SUBSET”,并在请求正文中传递serverId的子集


不用说,获取运行状况的预期方法将包括生成不同的线程来获取每个服务器的运行状况,并在单个响应中整合结果。

为什么不循环检查客户端上的所有服务器ID以检查每个服务器的运行状况?