swagger-ui提交請求無name(指input中的name屬性)值

swagger-ui提交請求,請求不包含name值,造成後臺無法進行接受參數。

 

@Operation(description = "上傳文件",tags = "上傳")
    @PostMapping(consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    public BaseResponseDataVo<UploadFileModel> uploadFile(@Parameter(style = ParameterStyle.FORM,explode = Explode.TRUE) MultipartFile multipartFile){

        String yearMonthDay = DateFormatUtils.format(new Date(), "yyyyMMdd");

        return null;
    }

// 就算把@Parameter換成 @Parameter(name = "multipartFile",schema = @Schema(type = "string",format = "binary"))  也不行,使用@ApiParam也不會提交攜帶name屬性名
//swagger的@RequestBody和spring的RequestBod依舊解決不了問題

// swagger的@RequestBody(content = @Content(mediaType = "application/octet-stream",schema = @Schema(type = "string",format = "binary",name = "file"))) 也解決不了問題
// 把@Parameter註解換成swagger1.5.X的@ApiParam(name = "multipartFile",value = "文件對象")註解,也依舊無果

說明:我指的name值就是form表單input元素的name值,沒有這個值你後臺接收不到的

 

經過多次嘗試無果後,再@Parameter註解位置再添加一個 @RequestPart("file") 註解即可解決swagger提交請求無name值的問題

 

@RequestParam註解DOC文檔翻譯:

指示方法參數應綁定到Web請求參數的註釋。
在Spring MVC和Spring WebFlux中支持註釋的處理程序方法,如下所示:

 * 在Spring MVC中,“request parameters”映射到查詢參數,表單數據和多部分請求中的零件。 這是因爲Servlet API將查詢參數和表單數據組合到稱爲“parameters”的單個映射中,並且包括對請求正文(request body)的自動解析。

 *  在Spring WebFlux中,“request parameters”僅映射到查詢參數。 要處理所有3種查詢,表單數據和多部分數據,可以將數據綁定到使用ModelAttribute註釋的命令對象。

如果方法參數類型爲Map並指定了請求參數名稱,則假定適當的轉換策略可用,請求參數值將轉換爲Map。
如果方法參數爲Map <String,String>或MultiValueMap <String,String>並且未指定參數名稱,則將使用所有請求參數名稱和值填充map參數。

 

@RequestPart註解DOC文檔翻譯:

 

可用於將“ multipart / form-data”請求的一部分與方法參數關聯的註釋。
支持的方法參數類型包括MultipartFile和Spring的MultipartResolver抽象,javax.servlet.http.Part和Servlet 3.0多部分請求結合,或者對於其他任何方法參數,該部分的內容都通過HttpMessageConverter傳遞,並考慮到請求部分的“ Content-Type”標頭。這類似於@RequestBody根據非分段常規請求的內容來解析參數的操作。
請注意,@ RequestParam批註還可用於將“ multipart / form-data”請求的一部分與支持相同方法參數類型的方法參數相關聯。

主要區別在於,當方法參數不是字符串或原始MultipartFile / Part時,@ RequestParam依賴於通過註冊的Converter或PropertyEditor進行的類型轉換,而RequestPart則依賴於HttpMessageConverters的考慮到請求部分的“ Content-Type”標頭。 RequestParam可能與名稱-值表單字段一起使用,而RequestPart可能與包含更復雜內容的部分一起使用,例如JSON,XML)。

 

 

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章