中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JSON文件上傳操作實例分析

發布時間:2022-03-01 10:36:55 來源:億速云 閱讀:711 作者:iii 欄目:開發技術

這篇文章主要介紹“JSON文件上傳操作實例分析”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“JSON文件上傳操作實例分析”文章能幫助大家解決問題。

想想你要表達的操作

一個常見的錯誤是關注操作所需的特定文件格式。相反,我們應該考慮我們想要表達的操作。文件格式僅決定用于操作的媒體類型。

例如,假設我們要設計一個 API,讓用戶將頭像圖片上傳到他們的用戶帳戶。

在這里,出于各種原因,將頭像圖像與用戶帳戶資源分開通常是一個好主意:

  • 頭像圖像不太可能改變,因此它可能是緩存的一個很好的候選者。另一方面,用戶帳戶資源可能包含諸如上次登錄日期之類的經常更改的內容。

  • 并非所有訪問用戶帳戶的客戶端都可能對頭像圖像感興趣。因此,可以節省帶寬。

  • 對于客戶端來說,通常最好單獨加載圖像(想想使用 <img> 標簽的 Web 應用程序)

可以通過以下方式訪問用戶帳戶資源:

/users/<user-id>

我們可以想出一個代表頭像圖像的簡單子資源:

/users/<user-id>/avatar

上傳頭像是一個簡單的替換操作,可以通過 PUT 表示:

PUT /users/<user-id>/avatar
Content-Type: image/jpeg
 
<image data>

如果用戶想要刪除他的頭像,我們可以使用簡單的 DELETE 操作:

DELETE /users/<user-id>/avatar

當然,客戶需要一種顯示頭像的方法。因此,我們可以使用 GET 提供下載操作:

GET /users/<user-id>/avatar

返回

HTTP/1.1 200 Ok
Content-Type: image/jpeg
 
<image data>

在這個簡單的例子中,我們使用了一個帶有常見更新、刪除、獲取操作的新子資源。唯一的區別是我們使用圖像媒體類型而不是 JSON 或 XML。

讓我們看一個不同的例子。

假設我們提供了一個 API 來管理產品數據。我們希望通過一個選項來擴展此 API,從上傳的 CSV 文件中導入產品。我們應該考慮一種表達產品導入操作的方法,而不是考慮文件上傳。

可能最簡單的方法是將 POST 請求發送到單獨的資源:

POST /product-import
Content-Type: text/csv
 
<csv data>

或者,我們也可以將其視為產品的批量操作。PATCH 方法是一種表達對集合的批量操作的可能方式。在這種情況下,CSV 文檔描述了對產品集合的期望更改。

例如:

PATCH /products
Content-Type: text/csv
 
action,id,name,price
create,,Cool Gadget,3.99
create,,Nice cap,9.50
delete,42,,

此示例創建兩個新產品并刪除 id 為42的產品。

處理文件上傳可能需要相當長的時間。所以考慮將其設計為異步 REST 操作

混合文件和元數據

在某些情況下,我們可能需要將額外的元數據附加到文件中。例如,假設我們有一個 API,用戶可以在其中上傳假日照片。除了實際的圖像數據,照片還可能包含描述、拍攝地點等。

在這里,我會推薦使用兩個單獨的操作,原因與上一節中關于頭像圖像的原因類似。即使這里的情況有點不同(數據直接鏈接到圖像),它通常也是更簡單的方法。

在這種情況下,我們可以首先通過發送實際圖像來創建照片資源:

POST /photos
Content-Type: image/jpeg
 
<image data>

作為回應,我們得到:

HTTP/1.1 201 Created
Location: /photos/123

之后,我們可以將額外的元數據附加到照片中:

當然,我們也可以反過來設計,在圖像之前發送元數據。

在 JSON 或 XML 中嵌入 Base64 編碼的文件

如果無法在單獨的請求中拆分文件內容和元數據,我們可以使用Base64 編碼將文件嵌入到 JSON/XML 文檔中。使用 Base64 編碼,我們可以將二進制格式轉換為文本表示,該文本表示可以集成到其他基于文本的格式中,例如 JSON 或 XML。

示例請求可能如下所示:

POST /photos
Content-Type: application/json
 
{
    "width": "1280",
    "height": "920",
    "filename": "funny-cat.jpg",
    "image": "TmljZSBleGFt...cGxlIHRleHQ="
}

將媒體類型與多部分請求混合

在單個請求/響應中傳輸圖像數據和元數據的另一種可能方法是多部分媒體類型。

多部分媒體類型需要一個邊界參數,用作不同正文部分之間的分隔符。以下請求由兩個正文部分組成。第一個包含圖像,而第二個部分包含元數據。

例如:

POST /photos
Content-Type: multipart/mixed; boundary=foobar
 
--foobar
Content-Type: image/jpeg
 
<image data>
--foobar
Content-Type: application/json
 
{
    "width": "1280",
    "height": "920",
    "filename": "funny-cat.jpg"
}
--foobar--

不幸的是,多部分請求/響應通常很難處理。例如,并非每個 REST 客戶端都能夠構建這些請求,并且很難在單元測試中驗證響應。

關于“JSON文件上傳操作實例分析”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安徽省| 龙山县| 辽源市| 宜城市| 莒南县| 松原市| 沾益县| 临朐县| 西平县| 新平| 辰溪县| 台中市| 濮阳县| 丹巴县| 南昌市| 绥江县| 固原市| 时尚| 宿州市| 宜都市| 政和县| 高青县| 定陶县| 依兰县| 望江县| 海盐县| 奈曼旗| 苗栗市| 阿拉尔市| 晴隆县| 扶沟县| 乌拉特后旗| 阳东县| 长宁区| 黔南| 武夷山市| 虎林市| 贡山| 开化县| 民乐县| 无锡市|