1、
application/json
包引用
compile("org.springframework.cloud:spring-cloud-starter-openfeign")
feign端调用
@FeignClient(name = "dcv-service")
public interface DCVService {
@PostMapping(value = "/dcvApi/dcvValidate")
ViewData domainValidation(AuthInfo authInfo);
}
service端
@RequestMapping(value = "/dcvValidate", method = RequestMethod.POST)
@ResponseBody
public ViewData dcvValidate(@RequestBody AuthInfo authInfo) {
ViewData viewData = dcvService.domainValidation(authInfo);
return viewData;
}
2、
application/x-www-form-urlencoded
包引用
compile("org.springframework.cloud:spring-cloud-starter-openfeign")
compile group: 'io.github.openfeign.form', name: 'feign-form', version: '3.3.0'
compile group: 'io.github.openfeign.form', name: 'feign-form-spring', version: '3.3.0'
form表单配置
public class CoreFeignConfiguration {
@Autowired
private ObjectFactory<HttpMessageConverters> messageConverters;
// new一个form编码器,实现支持form表单提交
@Bean
public Encoder feignFormEncoder() {
return new SpringFormEncoder(new SpringEncoder(messageConverters));
}
}
feign调用
@FeignClient(name = "dcv-service", configuration = CoreFeignConfiguration.class)
public interface DCVService {
@PostMapping(value = "/dcvApi/dcvValidate", consumes = "application/x-www-form-urlencoded")
ViewData domainValidation(Map<String, ?> authInfo);
}
service端
@RequestMapping(value = "/dcvValidate", method = RequestMethod.POST)
@ResponseBody
public ViewData dcvValidate(AuthInfo authInfo) {
ViewData viewData = dcvService.domainValidation(authInfo);
return viewData;
}
注1: feign默认的是application/json的方式。
注2: 测试过程中出现 read time out异常,发现默认超时时间是1s,可以配置超时时间如下:
ribbon:
ReadTimeout: 60000 #default=1000
ConnectTimeout: 60000 #default=1000
maxAutoRetries: 0 #调用失败的重试次数