赞
踩
feign可以调用内部服务,也可以http调用第三方请求。
feign是RestTemplate的封装。但是restTemplate需要公共方法处理入参和返回值结构转化,比较麻
烦,所以推荐feign调用。
首先,这里讲下form表单 application/x-www-form-urlencoded 这种方式的调用,因为比较特殊,
所以单独说说它。
①加入依赖
- <!--open feign-->
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-starter-openfeign</artifactId>
- </dependency>
- <!--open feign okhttp-->
- <dependency>
- <groupId>io.github.openfeign</groupId>
- <artifactId>feign-okhttp</artifactId>
- </dependency>
②创建feign接口
- @FeignClient(url = "${identity.serverAddress}", name = "identity-feign")
- public interface IIdentityFeignClient {
-
- @PostMapping(value = "${identity.loginMethod}", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
- @ResponseBody
- IdentityTokenDTO identityToken(@RequestBody Map<String, ?> tokenVO);
- }
@FeignClient的name属性一定要写,会报错;
consumers属性的枚举类参数,一定要声明,否则不支持x-www-form-urlencoded;
方法的入参类型一定是Map<String,?>一定要是问号,否则接口不通400;
至于返回值类型,这样子是成功的,按照成功时候的属性写个类。等着探究探究
③启动类添加注解 @EnableFeignClients。注意是否扫描到@EnableFeignClients(“Feign接口所在
的包名”)
④日志打印
在配置文件中,添加如下,注意路径和类名
- logging:
- level:
- org.qdsm.base.common.IIdentityFeignClient: debug
- feign:
- client:
- config:
- default:
- loggerLevel: full
A服务调用B服务 步骤:
①B正常新建controller,但是建议用feignController新建做业务区分
②A新建接口类,要记得添加注解@FeignClient;还要记得在启动类添加@EnableFeignClients
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。