【Easylive】項目常見問題解答(自用&持續更新中…) 匯總版
consumes = MediaType.MULTIPART_FORM_DATA_VALUE
的作用
1. 定義請求的數據格式
? 作用:告訴 Feign 和 HTTP 客戶端,這個接口 接收的是 multipart/form-data
格式的數據(通常用于文件上傳)。
? 為什么需要它?
? 文件上傳(MultipartFile
)必須用 multipart/form-data
格式傳輸,不能直接用 JSON 或普通表單。
? 不加這個參數,服務端可能無法正確解析文件。
2. 對應服務端的 @RequestPart
? 服務端(easylive-cloud-resource
)的接口:
@PostMapping(value = "/inner/file/uploadImage", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public String uploadImage(@RequestPart MultipartFile file, @RequestParam Boolean createThumbnail) { ... }
? consumes
必須和客戶端(ResourceClient
)一致,否則會報 415 Unsupported Media Type 錯誤。
@RequestPart
和 @RequestParam
的作用
1. @RequestPart
:處理文件或復雜數據
? 適用場景:
? 用于接收 文件(MultipartFile
) 或 非簡單類型數據(如 JSON 字符串)。
? 示例:
@RequestPart MultipartFile file // 接收上傳的文件
? 調用時,Feign 會自動將文件轉換成 multipart/form-data
格式發送。
2. @RequestParam
:處理普通表單字段
? 適用場景:
? 用于接收 普通參數(如 String
、Boolean
、Integer
)。
? 參數會以 key=value
形式拼接到 URL 或表單中。
? 示例:
@RequestParam Boolean createThumbnail // 接收布爾值參數
? 調用時,Feign 會把它變成 ?createThumbnail=true
或表單字段。
3. 對比總結
注解 | 用途 | 常見參數類型 | HTTP 傳輸方式 |
---|---|---|---|
@RequestPart | 文件或復雜數據 | MultipartFile | multipart/form-data 格式 |
@RequestParam | 普通字段(簡單類型) | String 、Boolean | URL 查詢參數(?key=value )或表單字段 |