比方說,你有這樣的允許客戶端查找上市公司A /企業資源,你想客戶能夠通過北京時間,位置和區位和產業如何用不同的查找器「方法」獲取REST資源?
你保持相同的URL的形式來查找企業:
- GET /公司/ MSFT
- GET /公司/美國
- GET /公司/美國&軟件
這看起來不對。有任何想法嗎?
比方說,你有這樣的允許客戶端查找上市公司A /企業資源,你想客戶能夠通過北京時間,位置和區位和產業如何用不同的查找器「方法」獲取REST資源?
你保持相同的URL的形式來查找企業:
這看起來不對。有任何想法嗎?
怎麼樣?
GET /Companies?ticker=MSFT
GET /Companies?country=USA
GET /Companies?country=USA&industry=software
重要的是識別資源。該資源是「公司名單」。其媒體類型可以是Atom列表,或者只是使用UL LI標籤的HTML文檔。查詢參數會影響列表的內容,但從概念上講,它仍然是「公司列表」。
您可以創建一個獨特的資源,如
GET /Companies/USA
但你真的需要。你打算髮布到/公司/美國?你要刪除/公司/美國?如果您的應用程序不需要對這些特定公司執行額外操作的能力,那麼爲什麼要將它們建模爲不同的資源呢?
作爲本次討論的一個附註,我希望更清楚地區分何時訪問單個實體與列表的資源。即
GET /Companies/USA
GET /Company/MSFT
我意識到這不是一些流行的web框架的工作方式,但我發現它是一個有用的區別。
你可以接受任何這些,但是然後返回一個Location:頭指向規範地址(大概是GET/companies/msft)。
後兩個查詢將返回多個公司。 –
你只有一家公司,但有多種方式,所以我可能會定義/ companies/[unique-name],然後是諸如/ companies/byticker/msft和/ companies/bylocation /美國等。
這不是一個非常RESTful的方法。 – workmad3
@ workmad3如果您要使用該短語,您需要解釋違反了哪個REST約束。我們看到* WAY *在沒有任何證據的情況下過多地使用了「那不是RESTful」這個短語。 –
這不是RESTful,因爲資源應該具有唯一的名稱。如果您有多個查詢返回「相同的事物」,那麼它們應該返回可以被獲取的資源的唯一名稱,而不是資源本身。具有唯一名稱對於REST體系結構中的緩存一致性非常重要。一個名字,一個緩存策略,一個「地點」來獲取它,改變它,等等。 –
我們希望在公司層面執行操作。即:/ companies/msft –
看到我的更新。我找到了url/Companies/msft的誤導。它是否返回了具有股票行情的公司名單?或者它是否返回公司資源的表示形式?無論如何,這只是我的偏好。對於REST而言,URL命名對於面向對象編程而言非常重要。 –
明白了。我同意。 –