具有昂贵属性的RESTful资源

时间:2013-01-08 21:59:58

标签: rest

我有资源/消息。

在我的java代码中,Message接口如下所示:

interface Message {
    public int getID();
    public int getPostingUserID();
    public String getText();
    public int getRelevance();
}

例如,/ messages / 7将提供以下内容:

{ id: 7, postingUserID: 102, text: "tabs are better!", relevance: 10.3 }

不幸的是,getRelevance()在运行中计算起来非常昂贵,并且只需要十分之一的查询。我不想在不需要的时候计算它。

所以,我可以看到几个选项:

  • / messages / 7?includeRelevance = true告诉它计算相关性,否则不要在响应中包含它
  • / messages / 7 / related作为单独的请求,然后计算
  • / relevances?forMessageID = 7作为单独的请求,然后计算

哪个选项最RESTful?

谢谢!

2 个答案:

答案 0 :(得分:3)

在这种情况下,我倾向于使用/messages/7/relevance,并且我确保在提取/messages/7时返回的文档包含相关相关资源的URL (当然,对于HATEOAS的可发现性)。

答案 1 :(得分:0)

最RESTful的方式(我相信,肯定是错的)是定义2种不同的媒体类型。

客户端可以使用Accept:标头请求特定的标头,您可以默认为最小标头。