首页 > 解决方案 > 我应该在 GET 响应中返回对象 ID 还是整个对象实体?

问题描述

例如,假设我有事件和每个事件的位置。关于如何设计 API 响应,我可以想到几个选项:

GET /events/1
  1. 返回位置的 ID
{
    id: 1, 
    name: Event name,
    location: 1
}
  1. 返回整个位置对象
{
    id: 1, 
    name: Event name,
    location: {
        id: 1, 
        name: Location Name
    }
}

现在,我不喜欢选项 1,因为如果需要,客户端必须再次查询以检索位置数据。我查看了其他一些公共 API,发现其中一些是这样做的:

GET /events/1?expand=location

这将扩展位置对象,如果没有,它只会返回对象。我喜欢这个,而且看起来不错。

GET /events/1?fields=name

{
    name: Event name
}

所以在这里,标准是返回位置对象和所有其他字段,但他们可以指定他们想要的字段。因此,如果需要位置,他们可以将其添加到字段参数中,或者如果需要所有内容,则不添加参数。

哪个是最佳实践,使用扩展还是使用字段?

两者都达到了我想要的效果,但是默认情况下 expand 仍会返回不必要的字段。但是,使用字段意味着它需要不断询问所有需要的字段,并且我不确定这是否会在服务器中花费更多时间。

标签: jsonrest

解决方案


推荐阅读