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)目,
- @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/