在REST API中使用*作为资源ID是否明智?我想用它来搜索。我使用RESTEasy开发我的web服务。
假设我拥有用户和用户具有姓名和年龄的资源。然后我的REST API看起来像:
/users/{id}/name
/users/{id}/age
现在,如果我想显示我正在考虑使用以下内容的所有名称:
/users/*/name
这是正确的还是我应该采用其他方式?
编辑1:添加子资源
从答案中建议使用字段查询参数。但是,我想我现在想要一些属于子资源的东西。例如:
/user/*/name/full
/user/*/name/short
如果我按照字段选项,我将不得不这样做:
/user?fields=name-short
/user?fields=name-full
由于name的属性以某种方式链接到名称类,所以它并不好。
请考虑这个例子。试着理解;)
答案 0 :(得分:2)
您可以使用通配符,但不能使用您在问题中显示的方式。如果您想在同一请求中获取除名称之外的更多详细信息,该怎么办?
您可以使用查询参数来允许users
集合的字段选择:
/users?fields=name
/users?fields=age
/users?fields=name,age
或者你可以从partial responses are handled in the Google Drive API:
的方式中获得灵感/users?fields=name(short,full)
或者,您可以使用点符号:
/users?fields=name.short,name.full
或者使用两者的混合,例如Spotify API。
如果您不需要字段选择,则可以使用自定义媒体类型,returning a predefined set of fields。