指定资源的方式';RESTful API请求中的字段列表
我在web服务中有一个RESTful API,其中包含用户、帖子等资源。当我请求一个帖子列表(GET/posts)时,我只想检索一个帖子数组,每个帖子的数据有限(即主题、作者姓名)。当我请求一个具体的帖子(GET/posts/42)时,我想检索帖子对象字段的完整列表,包括大帖子正文、关于喜欢数、评论数的其他信息。 我想有很多方法可以解决这个问题。指定资源的方式';RESTful API请求中的字段列表,rest,restapi,Rest,Restapi,我在web服务中有一个RESTful API,其中包含用户、帖子等资源。当我请求一个帖子列表(GET/posts)时,我只想检索一个帖子数组,每个帖子的数据有限(即主题、作者姓名)。当我请求一个具体的帖子(GET/posts/42)时,我想检索帖子对象字段的完整列表,包括大帖子正文、关于喜欢数、评论数的其他信息。 我想有很多方法可以解决这个问题。 在我看来,最明显的三点是: 在每个请求上显式指定字段列表 (/posts?fields=主题、作者姓名和 /posts/42?字段=主题、正文、cre
在我看来,最明显的三点是:
/posts?fields=主题、作者姓名和
/posts/42?字段=主题、正文、createAt、作者姓名、评论数、喜欢数等
我想为我的客户建立一个清晰而有用的API。我应该选择哪条路?我会选择选项2 IMHO 因此,如果消费者只是请求资源url(
/posts/42
),他们会收到默认字段
然后,使用者可以通过在查询字符串中定义如下值来更改默认响应:
/posts/42/fields?主题、作者姓名
这在过去对我很有效,这也是一些其他众所周知的API的工作原理,例如
编辑:回顾这一点,我将请求更改为:
/posts/42?fields=主题、作者姓名
/post/42
是资源,而不是字段。也一直在做这方面的研究,并被指向Facebook的GraphQL,作为请求包含所需字段的restful api的替代方案。它仍处于非常早期的阶段,但似乎很有希望
编辑:
从URL复制:
GraphQL查询是由服务器解释的字符串,返回指定格式的数据。以下是一个查询示例:
(注意:此语法与以前的GraphQL示例略有不同。我们最近对该语言进行了改进。)
下面是对这个问题的回答
我同意。它提供了一个较低的进入门槛,因此开发人员可以探索并轻松查看默认字段,但如果需要,仍然可以灵活地要求确切的内容。我也有选项(2),但我允许
fields=*
获取所有字段,以便查询完整的字段集(特别是对于想要知道或反复检查该集合是什么的开发人员)。
{
user(id: 3500401) {
id,
name,
isViewerFriend,
profilePicture(size: 50) {
uri,
width,
height
}
}
}
{
"user" : {
"id": 3500401,
"name": "Jing Chen",
"isViewerFriend": true,
"profilePicture": {
"uri": "http://someurl.cdn/pic.jpg",
"width": 50,
"height": 50
}
}
}