簡體   English   中英

在 REST API 響應中返回指向資源位置的 URL 允許什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM