Feign遠程調(diào)用Multipartfile參數(shù)處理
Feign遠程調(diào)用Multipartfile參數(shù)
今天在寫業(yè)務(wù)代碼的時候遇到的問題, 前端請求A服務(wù),能正確把參數(shù)給到A服務(wù)<參數(shù)里面包括文件類型的 Multipartfile>,但是當(dāng)A服務(wù)調(diào)用B服務(wù)時把文件參數(shù)丟過去,那邊接收不到,并且會報Multipartfile 參數(shù)錯誤。
在網(wǎng)上找到了答案,特此記錄一下:
解決方案
必須的
在你的fegin 服務(wù)接口暴露的地方新建一個配置類。
package com.gobon.gbjk.file.api.config; import feign.form.spring.SpringFormEncoder; import org.springframework.beans.factory.ObjectFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.http.HttpMessageConverters; import org.springframework.cloud.openfeign.support.SpringEncoder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** ?* <p> ?* feign配置類 ?* </p> ?* ?* @projectName: gbjk-user ?* @package: com.gobon.gbjk.file.api.config ?* @className: FeignSupportConfig ?* @author: wen jun tang ?* @date: 2021年12月21日 12:25 ?* @version: 1.0 ?*/ @Configuration public class FeignSupportConfig { ? ? @Autowired ? ? private ObjectFactory<HttpMessageConverters> messageConverters; ? ? @Bean ? ? public SpringFormEncoder feignFormEncoder() { ? ? ? ? return new SpringFormEncoder(new SpringEncoder(messageConverters)); ? ? } }
然后你的接口 文件參數(shù)用@RequestPart修飾:
@PostMapping(value = "/file/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) AjaxResult upload(@RequestPart("file") MultipartFile file, @RequestParam("bucketName") String bucketName);
再次調(diào)用, 完美解決!
Feign遠程調(diào)用傳參問題
如果是簡單參數(shù),用@RequestParam或者@PathVariable注解
如果是對象參數(shù),用@RequestBody注解
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
將InputStream轉(zhuǎn)化為base64的實例
這篇文章主要介紹了將InputStream轉(zhuǎn)化為base64的實例,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12Java?中很好用的數(shù)據(jù)結(jié)構(gòu)EnumSet
這篇文章主要介紹了Java?中很好用的數(shù)據(jù)結(jié)構(gòu)EnumSet,EnumMap即屬于一個Map,下文圍繞主題展開詳細內(nèi)容,需要的小伙伴可以參考參考一下2022-05-05