SpringCloud Feign在遠程調用中傳輸文件


1. 文件遠程傳輸主要涉及3點: 請求方式, 媒體類型, 序列化與反序列化, 把握住了這3點,基本上就可以搞

2. 使用Feign傳輸,首先搭建起Feign的架子

  2.1 引入spring-cloud-starter-eureka-server依賴,用於啟動一個eureka注冊中心

  2.2 引入spring-cloud-starter-eureka依賴,用於開啟向eureka注冊中心注冊自己

  2.3 在調用遠程服務的客戶端引入spring-cloud-starter-feign, 用於使用feign

3. 既然是遠程調用, 項目中就必須至少有2個服務,一個扮演客戶端,一個扮演服務端,對於文件上傳來說,可以將文件上傳服務定為客戶端,將文件的處理服務定為服務端.客戶端接收到文件后調用服務端處理文件

  3.1 創建一個eureka注冊中心

  3.2 創建一個客戶端

  3.3 創建一個服務端

4. 基礎架構搭建好了以后,可以在2個服務中都搭建基礎的上傳服務接口了,測試上傳文件沒問題后,可以進行Feign的調用搭建

  4.1 使用POST請求

  4.2 指定接口接收的數據類型為multipart/form-data

  4.3 使用MultipartFile類型接收文件

5. Feign的調用搭建

  5.1 誰使用Feign就在誰的配置中開啟支持注解@EnableFeignClients

  5.2 創建Feign的基樁,在接口類上綁定要調用服務的服務ID,在接口方法上綁定要調用方法的請求路徑,同時指定媒體類型

6. 此時重啟2個服務,調用試試,發現報錯,原因是編碼問題,此時就是序列化和反序列化的問題,需要:

  6.1 引入2個包,用於編碼的支持

<dependency>
<groupId>io.github.openfeign.form</groupId>
<artifactId>feign-form</artifactId>
<version>3.0.3</version>
</dependency>
<dependency>
<groupId>io.github.openfeign.form</groupId>
<artifactId>feign-form-spring</artifactId>
<version>3.0.3</version>
</dependency>

  6.2 給容器增加一個Bean,用於具體的編碼支持

@Bean
public Encoder encoder(){
return new SpringFormEncoder();
}

7. 總結

  傳文件主要盯住3樣東西: POST請求方式, multipart/form-data媒體類型,遠程調用的序列方案


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM