spring cloud feign调用service的两种POST传值方式

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 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 authInfo);
}
service端
@RequestMapping(value = "/dcvValidate", method = RequestMethod.POST)
@ResponseBody
public ViewData dcvValidate(AuthInfo authInfo) {
    ViewData viewData = dcvService.domainValidation(authInfo);
    return viewData;
} 

参考:form-url-encode

注1: feign默认的是application/json的方式。

注2: 测试过程中出现 read time out异常,发现默认超时时间是1s,可以配置超时时间如下:

ribbon:
  ReadTimeout: 60000   #default=1000
  ConnectTimeout: 60000  #default=1000
  maxAutoRetries: 0 #调用失败的重试次数

你可能感兴趣的:(微服务)