2011-10-04 46 views
0

我寫了一個基於RESTEasy的REST服務器。返回位置信息的RESTful方式

在某些資源,對象的集合返回而不是單個對象:響應該URL「/users/{user_id}」該方法返回一個「user」對象,但響應URL「/users」返回方法全部用戶。在前一種情況下,我可以包含一個HTTP頭「Content-Location: URL」(儘管這是多餘的,因爲調用者具有正確的URL)。在後一種情況下,返回集合中的每個項目都有自己的位置。我在想添加XML屬性的每個項目確定它的位置:

<users> 
    <user location="https://stackoverflow.com/users/1234"> 
    ... 
    </user> 
    <user location="https://stackoverflow.com/users/5678"> 
    ... 
    </user> 
</users> 

是否有返回該信息的一些常規的方法是什麼?

回答

1

這是設計超媒體API時非常普遍的做法。它也強烈推薦。沒有官方的「正確」方式來做這件事,但是一種媒體類型對你如何做到這一點有着非常明確的規定。見http://stateless.co/hal_specification.html

在HAL您的文檔看起來像:

<resource href="/users"> 
    <resource rel="item" href="https://stackoverflow.com/users/1234"> 
     ... 
    </resource> 
    <resource rel="item" href="https://stackoverflow.com/users/5678"> 
     ... 
    </resource> 
</resource> 

我拿起術語「項」,因爲它已經僞標準化,但你可以把你自己的鏈接關係,也有短短規則你應該在識別你自己的鏈接關係時遵循。 (請參閱RFC5988以瞭解詳細信息)

+0

從Bill Burke的閱讀「RESTful Java with JAX-RS」中,他描述了使用''子元素。 – Ralph

+0

@Ralph在這種情況下,rel =「self」對於鏈接到個人用戶是沒有意義的,因爲「self」是用戶的集合。但是,在某些其他基於XML的媒體類型中使用atom:link是一種有效的方法。問題是,還有哪些基於XML的媒體可以使用? –