J'essaye de renvoyer une requête en plusieurs parties via feign.
@Configuration class MultipartSupportConfig { @Autowired ObjectFactory<HttpMessageConverters> messageConverters; @Bean @Primary @Scope("prototype") public Encoder feignFormEncoder() { return new SpringFormEncoder(new SpringEncoder(messageConverters)); } }
ceci est un appel de service.
@PostMapping(value = "{pathUri1}/{pathUri2}",consumes = MediaType.MULTIPART_FORM_DATA_VALUE,produces = MediaType.APPLICATION_JSON_VALUE) ResponseEntity<BaseResponse<?>> uploadFileCall(@PathVariable(value = "pathUri1") String pathUri1, @PathVariable(value = "pathUri2") String pathUri2, @RequestPart(name = "file") MultipartFile file, @RequestParam Map<Object,Object> requestParam, @RequestHeader HttpHeaders httpHeaders);
a ajouté la configuration de l'encodeur pour le multipart / form-data.
J'ai suivi ceci https://github.com/OpenFeign/feign-form
Mais j'obtiens hystrixRunTimeException
qui est dû à
java.lang.NoClassDefFoundError: feign / Request $ Body error.
3 Réponses :
Utilisez la version feign-form-spring 3.4.1.
Gradle
<dependency> <groupId>io.github.openfeign.form</groupId> <artifactId>feign-form</artifactId> <version>3.4.1</version> </dependency>
Maven
compile(group: 'io.github.openfeign.form', name: 'feign-form-spring', version: '3.4.1')
Vérifiez exigences https://github.com/OpenFeign/feign-form#requirements p>
Selon le document github open-feign , veuillez noter strong > les versions du faux-formulaire:
La configuration suivante fonctionne pour moi:
<dependency> <groupId>io.github.openfeign</groupId> <artifactId>feign-jackson</artifactId> <version>${feign.version}</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> <dependency> <groupId>io.github.openfeign</groupId> <artifactId>feign-httpclient</artifactId> <version>${feign.version}</version> </dependency>
Où:
Hoxton.SR3