HATEOAS(超媒體作爲應用程序狀態的引擎)建議是否暗示查詢字符串不是RESTful?HATEOAS是否暗示查詢字符串不是RESTful?
編輯:下面建議查詢字符串可能與狀態沒有太大關係,因此問題令人費解。我建議,除非客戶端正在填寫參數,否則URI沒有任何意義。如果客戶端正在填充參數,那麼它會摻雜服務器提供的URI,我想知道這是否違反了RESTful原則。
編輯2:我意識到查詢字符串似乎無害,如果客戶端將其視爲不透明(和查詢字符串可能是遺留的,因此方便)。然而,在下面的一個答案中,引用了Roy Fielding的觀點,認爲URI應該被認爲是透明的。如果它是透明的,那麼我認爲摻雜是被鼓勵的,這似乎淡化了HATEOAS原則。這種稀釋是否與HATEOAS一致?這引發了REST是否在呼籲URI構建似乎是緊密耦合的問題。
更新在此REST教程http://rest.elkstein.org/中,建議URI構建是不好的設計並且不是RESTful。它也重複了@zoul在接受的答案中所說的話。
例如,「產品列表」請求可能會返回每個產品的ID,並且規範說明您應該使用http://www.acme.com/product/PRODUCT_ID以獲取更多詳細信息。這是糟糕的設計。相反,響應應該包括每個項目的實際URL:http://www.acme.com/product/001263等。是的,這意味着輸出更大。但這也意味着您可以根據需要輕鬆地將客戶端導向新網址
如果某人正在查看此列表並且不希望他/她能夠看到的內容,則可能會出現「前10項」然而,如果沒有人工,而是一個客戶程序,「下一個10個項目」按鈕,REST的這個方面似乎有點奇怪,因爲客戶端程序可能沒有用的所有「http://www」。
聽起來像是越野車軟件有可能通過對「有意義」的標識符進行可能有缺陷的解釋而被寫入。爲了防止有缺陷的解釋,看起來帶外信息是正確構建URI所必需的。如果需要帶外信息修改鏈接,那麼超媒體必須推動應用程序的狀態有什麼意義?如果您需要帶外信息,那麼爲什麼還要讓服務器發送一堆鏈接呢? – H2ONaCl 2011-01-05 14:36:22
好的,爲了回答我自己關於服務器發送鏈接的問題,我知道最好讓客戶端只使用一個衆所周知的資源,因此發送鏈接的服務器是一個好主意,並且查詢字符串可能對歷史很方便或者因爲它們映射到網關另一側的傳統名稱空間。然而,對於菲爾丁來說,他希望最大限度地偶然使用URI與鼓勵人們查詢字符串(安全地通過使用帶外信息或不安全地)是不完全相同的。這是查詢字符串,是我關心的核心。 – H2ONaCl 2011-01-05 14:50:18
處理查詢字符串看起來像緊密耦合。 REST是否真的鼓勵緊密耦合? – H2ONaCl 2011-01-05 14:56:39