[英]What does returning URLs in a REST API response pointing to the location of resources allow for?
我在 Google 等“最佳實踐”API 中看到了很多這種情況,但我不太清楚要使用的術語是什么。
例如,您可能有一個包含發票的訂單 object。 但發票實際上不在訂單響應上。 相反,您會收到以下內容:
Order: {
Id: 1234,
Invoice: "/order/invoices/5678
}
這種做法有什么好處? 它叫什么,我在哪里可以找到有關它的更多信息? 它允許我做什么,否則我將無法做到?
它是 REST 的一部分,稱為 HATEOS(超媒體作為應用程序狀態的引擎)
目的是使客戶端能夠與相關資源進行交互。 因此,在此示例中,訂單鏈接到發票。 但它也可能鏈接到例如客戶。 通常有一個單獨的帶有鏈接的相關資源塊。 同時有很多“REST”API 不這樣做。 我認為是REST最少使用的方面。
我不太清楚該用什么詞
您可能正在尋找“鏈接”與“嵌入”
鏈接:
Order: {
Id: 1234,
Invoice: "/order/invoices/5678
}
嵌入:
Order: {
Id: 1234,
Invoice: {
Id: 5678,
...
}
}
兩者之間的權衡包括表示的復雜性、收集“所有”信息所需的往返次數以及資源的緩存。
這有點類似於為 web 頁面提供圖像; 您是否希望圖像成為具有自己的緩存元數據的單獨資源,還是要將圖像表示直接嵌入到 HTML 中?
您有時會在資源模型中看到包含兩種不同的訂單資源; 一個使用鏈接,另一個使用嵌入式表示。
/order/1234
/order/1234?includeInvoice=true
當然,將相同的信息包含到多個資源中需要考慮其自身的權衡(緩存失效是兩個難題之一)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.