2012-12-16 136 views
1

我需要開發一個REST API,並且對URI設計有所懷疑。REST API URI設計

場景:

1 - 我正在開發一個REST接口,一組服務。

2 - 每個服務從邏輯角度分幾個部分(不是資源)。

3 - 每個資源可以通過兩種方式 「A」 和 「B」

什麼是最合適的URI的設計來訪問:

/服務1/part1的/資源{A | B }

/服務1,第一部分,資源{A |?B}

回答

0

雖然無論是URL結構會的工作,你上市/服務1/part1的/資源的選擇的{A |?B}是更爲典型,並有與普通REST一起工作的最高機會API消費工具,被開發人員直觀地理解等。正斜槓的含義實際上是在URI標準(我認爲是RFC 1630)中定義的,相對URI只能用於正斜槓。

+0

當使用GET/service1/part1/resource?{A | B}這意味着GET/service1應該返回一個服務列表?情況並非如此。因此,我應該使用/ service1/part1/resource?{A | B}還是/ service1,part1,資源?{A | B} – JSV

0

這一個是更好:

/service1/part1/resource?{A|B} 

,因爲它強調的層次結構(感謝斜線)。另外「訪問資源的方式」通常使用HTTP動詞(例如GET,POST,PUT,DELETE,HEAD等)發音。如果這就是你所說的「方式」,你應該堅持使用HTTP動詞。

+0

但是service1/part1不是一個層次結構。我讀過「將標點符號放在路徑變量中以避免暗示層次結構 不存在:/ parent/child1; child2」因此,如果part1不是service1的子項。 Service1分爲幾個部分,URI應該是/ service1,part1,資源?{A | B}? – JSV

+0

@JSV:對此的任何來源(我詢問「_Put標點字符在路徑變量中以避免暗示層次結構不存在:/ parent/child1; child2_」)?另請注意,分號不是**,與逗號相同 - 分號僅用於特殊的,依賴於模式的用途,例如。從_pa​​th_(http://tools.ietf.org/html/rfc2396.html)中分離_param_ - 而不是_query_ - 。 – Tadeck

+0

@JSV:這也不需要模仿服務器體系結構,它只是_should_表示REST API中的邏輯結構,所以即使你在服務器上沒有這樣的結構,最好也是這樣,顯示出來資源的邏輯分組。 – Tadeck