Spring cloud feign

feign get請(qǐng)求

feign 請(qǐng)求參數(shù)默認(rèn)是@RequestBody
如果是get請(qǐng)求要使用注解@RequestParam

Spring cloud feign 上傳 multipartFile 文件

服務(wù)端

@PostMapping()
  @ApiOperation(value = "文件上傳", httpMethod = "POST", notes = "文件上傳")
  fun uploadPlist( @RequestParam("file") uploadFile: MultipartFile): ResponseEntity<*> {
    try {
      return uploadService.upload(uploadFile).let { ResponseEntity.ok(it) }
    } catch (e: IOException) {
      logger.error(e.toString()
    }
  }

feign 消費(fèi):
添加依賴:

compile 'io.github.openfeign.form:feign-form:3.0.3'
  compile 'io.github.openfeign.form:feign-form-spring:3.0.3'
@FeignClient(ClientConstant.FILE, configuration = [FileClient.MultipartSupportConfig::class])
interface FileClient {

  @PostMapping(value = ["/file"], consumes = [MediaType.MULTIPART_FORM_DATA_VALUE])
  fun upload(@RequestPart("file") uploadFile: MultipartFile): FileClientParam

//@Configuration   //加上@Configuration注解表示全局都接受這個(gè)配置
  class MultipartSupportConfig {

    @Bean
    fun multipartFormEncoder(): Encoder {
      return SpringFormEncoder()
    }

    @Bean
    fun multipartLoggerLevel(): feign.Logger.Level {
      return feign.Logger.Level.HEADERS
    }
  }
}

注意:
1.@FeignClient(ClientConstant.FILE, configuration = [FileClient.MultipartSupportConfig::class])
在FeignClient 注解中單獨(dú)添加配置類僅作用于當(dāng)前類,在配置類上加@configuration 會(huì)作用于整個(gè)項(xiàng)目,

  1. @RequestPart("file") uploadFile: MultipartFile
    請(qǐng)求參數(shù)目前必須用 file做key,否則可能接收不到參數(shù),直接報(bào)400
    feign調(diào)用坑很多,請(qǐng)謹(jǐn)慎使用....

file 轉(zhuǎn) multipartFile,使用multipartFile的實(shí)現(xiàn)類CommonsMultipartFile
依賴:

compile group: 'commons-fileupload', name: 'commons-fileupload', version: '1.2'
val xmlFile=File("/abc.txt)
val fileItem = DiskFileItemFactory().createItem("file",
        MediaType.TEXT_PLAIN_VALUE, true, xmlFile.name) as DiskFileItem
    try {
      FileInputStream(xmlFile).use { input -> fileItem.outputStream.use { os -> IOUtils.copy(input, os) } }
    } catch (e: Exception) {
      throw IllegalArgumentException("Invalid file: $e", e)
    }
    val multi = CommonsMultipartFile(fileItem)

項(xiàng)目地址:https://github.com/athc/angle-cloud/tree/master/angle-business/business-feign
參考鏈接:http://blog.didispace.com/spring-cloud-starter-dalston-2-4/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容