使用内部锚点来过滤REST API表示是否有意义?

时间:2010-03-31 07:54:04

标签: rest api-design

作为关于用于检索网络论坛资源的统计信息的REST URI的my previous question的后续跟踪,我想知道是否可以使用内部锚点作为过滤器提示。见下面的例子:

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 }  ...]
    }
}

或者我应该使用查询参数吗?

4 个答案:

答案 0 :(得分:2)

不确定您要做的是什么,但要确保您了解服务器看不到片段标识符,客户端连接器会将它们切断。

请参阅:http://www.nordsc.com/blog/?p=17

答案 1 :(得分:0)

我从未见过用这种方式使用锚 - 这很有意思。话虽这么说,我建议使用查询参数有几个原因:

  1. 他们是标准的 - 您的api的消费者会对他们感到满意。处理一个古怪的api没有什么比这更烦人了。

  2. 许多框架会自动解析查询参数,并将它们设置在请求对象的字典中(或者框架/ http服务器库中存在的任何类似物)。

答案 2 :(得分:0)

我认为拥有以下内容会更有意义:

/group/5t7yu8i9io0op/stat/top_users
/group/5t7yu8i9io0op/stat/popular_topics
/group/5t7yu8i9io0op/stat/new_topics
/group/5t7yu8i9io0op/stat/user/george

答案 3 :(得分:0)

不,你不能这样做,因为Jan指出服务器永远不会看到该片段标识符。从字面上看,该部分网址不会到达服务器。