0

我有一个资源/消息。

在我的 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/relevance 作为一个单独的请求,然后计算它
  • /relevances?forMessageID=7 作为单独的请求,然后计算

哪个选项最 RESTful?

谢谢!

4

2 回答 2

3

在这种情况下,我会倾向于这样做/messages/7/relevance,并且我会确保在获取时返回的文档/messages/7包含指向相关相关资源的 URL(当然是为了 HATEOAS 的可发现性)。

于 2013-01-08T23:48:11.803 回答
0

执行此操作的最 RESTful 方式(我相信,而且肯定是错误的)是定义 2 种不同的媒体类型。

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

于 2013-01-08T22:53:28.707 回答