2013-10-22 131 views
0

我以前從來沒有必要設計一個RESTful服務,我想繪製出URI路由。REST風格的web api中的URI設計

假設有FooBar對象。 A Foo可以有多個與之關聯的Bars,但Bar也可以獨立於任何Foos。很明顯,因爲這兩種類型的可以獨立存在,他們將需要自己的URI層次,就像這樣:

/Foos 
/Bars 

這裏就是我的問題來自於可以說,我想創建一個Bar並將其與Foo關聯。哪種方法是實現這一點的最佳方式?方法1:創建Bar的單個API調用並將其與Foo關聯。

POST /Foos/{FooId}/Bars 

方法2:調用創建Bar,然後與Foo到相關的新Bar通話。 PUT會成爲聯繫電話的正確方法嗎?方法3:完全不同的東西。

回答

2

我更喜歡方法2,但我會認真考慮另外做方法1是否是個好主意。

我喜歡方法二,因爲它允許你創建獨立Bar,然後,如果合適的話,(如果需要的話或多個Foo S)將其與Foo關聯。

,我會在這裏適用的一些問題是:

  • 不要緊,如果是這樣的應該一個Bar與一個Foo成功創建相關聯,但沒有成功與Foo關聯?
  • 可以將Bar與多個Foo關聯嗎?
  • Bar是否對與之相關的Foo(s)知道任何事情?
  • 可以一個Foo有多個Bar

如果有一個浮動Bar應該Foo關聯但不是一個非常糟糕的事情,那麼你就需要像方法1(否則的東西可以在第一和第二呼叫之間發生方法2)。

我喜歡POST的慣例創建和修改(所以我會做你喜歡的方法2)。

您可能還想檢查URI中的複數形式。我傾向於單數,但...這裏的討論 -

REST URI convention - Singular or plural name of resource while creating it