使用内部锚点过滤 REST API 表示是不是有意义?
Posted
技术标签:
【中文标题】使用内部锚点过滤 REST API 表示是不是有意义?【英文标题】:Does it make sense to use internal anchors for filtering a REST API's representation?使用内部锚点过滤 REST API 表示是否有意义? 【发布时间】:2011-02-02 19:44:04 【问题描述】:作为my previous question 关于用于检索网络论坛资源的统计信息的 REST URI 的后续行动,我想知道是否可以使用内部锚点作为过滤器提示。请参见下面的示例:
a) 获取所有统计信息:
GET /group/5t7yu8i9io0op/stat
group_id: "5t7yu8i9io0op",
top_ranking_users:
[ user: "george", posts: 789, rank: 1 ,
user: "joel", posts: 560, rank: 2 ...]
,
popular_topics:
[ ... ]
,
new_topics:
[ ... ]
b) 只获取热门话题
GET /group/5t7yu8i9io0op/stat#popular_topics
group_id: "5t7yu8i9io0op",
popular_topics:
[ ... ]
c) 只获取排名靠前的用户
GET /group/5t7yu8i9io0op/stat#top_ranking_users
group_id: "5t7yu8i9io0op",
top_ranking_users:
[ user: "george", posts: 789, rank: 1 ,
user: "joel", posts: 560, rank: 2 ...]
或者我应该使用查询参数吗?
【问题讨论】:
【参考方案1】:不确定您到底要做什么,但请确保您了解服务器看不到片段标识符,它们被客户端连接器截断。
见:http://www.nordsc.com/blog/?p=17
【讨论】:
【参考方案2】:我从未见过以这种方式使用锚点 - 这很有趣。话虽如此,我建议使用查询参数有几个原因:
它们是标准的 - 您的 api 的消费者会很喜欢它们。没有什么比处理古怪的 api 更烦人了。
许多框架会自动解析查询参数并将它们设置在请求对象(或框架/http 服务器库中存在的任何类似物)的字典中。
【讨论】:
【参考方案3】:我认为这样更有意义:
/group/5t7yu8i9io0op/stat/top_users
/group/5t7yu8i9io0op/stat/popular_topics
/group/5t7yu8i9io0op/stat/new_topics
/group/5t7yu8i9io0op/stat/user/george
【讨论】:
【参考方案4】:不,您不能这样做,因为正如 Jan 指出的那样,服务器永远不会看到该片段标识符。从字面上看,这部分 url 不会到达服务器。
【讨论】:
以上是关于使用内部锚点过滤 REST API 表示是不是有意义?的主要内容,如果未能解决你的问题,请参考以下文章