簡體   English   中英

REST API-帶有元數據的文件-如何提交

[英]REST API - files with metadata - how to submit them

假設我正在創建一個服務來管理帶有元數據的文件。 正如在SO上的另一個線程中已經討論的那樣,首選方法是創建兩個資源:

  1. 文件(即GET / files / {fileId})-二進制文件,
  2. 元數據(即GET / files / {fileId} / metadata)-關聯的元數據。

問題是-允許客戶端上傳帶有元數據的文件的最佳方法是什么? 如何使用以下方法:

  1. POST / files-客戶端上載二進制文件,服務創建一個新的文件資源和一個相應的新的空(即默認值)元數據資源,並返回文件資源的ID(即fileId)。

  2. PUT / files / {fileId} / metadata-客戶端設置元數據。

我發現這種方法有一個缺點-假設某些元數據是強制性的。 通過這種流程,客戶端可能僅上傳文件,而沒有填寫元數據,從而使數據處於不一致狀態。

另一方面,允許客戶端同時發送文件和元數據似乎很奇怪,因為這是兩種不同的資源。

您將如何處理?

另一方面,允許客戶端同時發送文件和元數據似乎很奇怪,因為這是兩種不同的資源。

內容和元數據可能在您的服務器中表示為不同的資源,但是它們彼此之間密切相關,因此在沒有其他內容的情況下創建它們是沒有意義的。 例如,可能有一些客戶端僅需要元數據,因此它們可以顯示文件列表或有關單個文件的詳細信息。 另一方面,您需要元數據,以便客戶端至少可以知道他們下載的文件的名稱。 因此,您都需要它們。

這就是為什么最好在單個多部分 http請求中上載文件/內容和元數據。 在單個請求中上載所有內容使您的系統更加一致,因為它消除了上載內容但元數據未上載(或相反)的各種情況。

分段請求基本上是一個在其主體中同時具有元數據(作為字符串)和內容的請求。 唯一困難的部分是標題。 請查看上面的鏈接,以獲取有關多部分請求的更多信息,此外,您可能希望找到一個為您處理多部分標題的類(或類系列)(取決於您的平台/語言)。

另外-將元數據和內容作為不同的資源對客戶端來說是有益的-它們可能僅下載兩者之一,如果文件很大,則可以節省網絡流量(時間)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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