這可能是一個簡單的問題,但我自己無法弄清楚,也找不到在線資源。
我必須使用 spring boot 開發一個 REST API。我看到了兩個接受 json 有效負載的選項(在某些情況下最大有效負載大小為 3 MB)
選項 1:要求客戶端在請求正文中發送 json。讓 Jackson 將其轉換為 Java 物件
@RestController
public class EmployeeController {
@PostMapping
public void createEmployees(@RequestBody List<Employee> employees) {
// do something with employees
}
}
選項 2:要求客戶端上傳 json 檔案并讓控制器接受 Multipart 有效負載
@RestController
public class EmployeeController {
@PostMapping(consumes = { MediaType.MULTIPART_FORM_DATA_VALUE })
public void createEmployees(@RequestParam(name = "file") MultipartFile file) {
// convert multipart file data to List of Employee objects
//do something with employees
}
}
哪個選項更好,為什么?
uj5u.com熱心網友回復:
我認為選項1更好。這是因為如果你使用一個檔案,你必須讀取檔案中寫入的 json payload 并將其轉換為List<Employee>.
如果您使用 multipartFile,您會收到 base64 編碼資料。由于 base64 編碼資料將 8 位資料表示為 6 位資料,因此與原始資料相比,大小增加了 33%。
uj5u.com熱心網友回復:
如果我們談論的是您的 API 直接使用的結構化資料,那么最好將其上傳為application/json. 如果我們談論的是某種附件,您的 API 可能不會觸及或稍后才觸及它,例如影像、PDF 等,那么最好使用multipart/form-data并發送 JSON,它描述了附件的元資料,例如,它是朋友的照片等。所以我認為這取決于 JSON 以及您想用它做什么。在您的情況下,因為它將被處理,那么最好將其發送為application/json. 如果您稍后處理它,那么最好以這種方式發送它并創建一個事務資源,您可以在其中跟蹤處理狀態,例如POST /transactions {json}.
uj5u.com熱心網友回復:
從此RFC 2388開始,multipart/form-data媒體型別應運而生。
如此處所述
如果有許多具有短值的欄位,則multipart/form-data 編碼具有很高的開銷和性能
影響。然而,在
實踐中,對于正在使用的表單,例如在 HTML 中,平均
開銷并不顯著。
因此,如果您只想發送json具有大量相對較小欄位(如整數、布林值和小字串)的法線,您應該考慮它會嚴重影響您的開銷和性能。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/528154.html
標籤:爪哇春天弹簧靴api休息
