OpenFeigin整合Nacos调用Http服务
上一篇文章介绍了SpringCloud整合Nacos,应用服务通过Nacos的注册中心发布订阅。Nacos支持
Http,Dubbo,GRPC
等协议服务注册, 本文章pay-service支付模块作为支付服务提供者,order-service订单模块作为服务消费,模拟订单模块调用支付模块接口。
这里支付模块的接口为SpringBootHttp+Json
风格的API接口。pay-service,order-service模块也按照上篇文章配置服务注册到了到Nacos注册中心中。
Fegin使用
- Feign:Feign是Netflix公司开发的一个声明式的Web服务客户端,它使得编写Web服务客户端变得更加容易。Feign简化了HTTP请求和响应的处理,并且支持多种注解,如Feign自带的注解或JAX-RS注解等。然而,Feign本身并不支持Spring MVC注解,这在Spring用户中可能带来不便。此外,Netflix在2019年宣布Feign组件进入停更维护状态。
- OpenFeign:OpenFeign是Spring Cloud对Feign的增强和扩展,作为Feign的替代方案推出。OpenFeign支持Spring MVC注解,如@RequestMapping、@GetMapping等,使得与Spring框架的集成更加无缝。OpenFeign是Spring Cloud的一个二级子项目,持续得到更新和维护。
依赖引入
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
使用举例
pay-service提供SpringMVC注解的Http接口,请求接口为GET、POST、PathVariable
等举例:
@RestController
@RequestMapping("/pay")
public class PayController {
@GetMapping("/byGet")
public String byGet(String userName){
UserDTO userDTO=new UserDTO();
userDTO.setUserName("reply:hello "+userName);
return userDTO.getUserName();
}
@PostMapping("/byPost")
public String byPost(@RequestBody UserDTO userDTO){
userDTO.setUserName("reply:hello "+userDTO.getUserName());
return userDTO.getUserName();
}
@GetMapping("/byPath/{userName}")
public String byPath(@PathVariable("userName") String userName){
UserDTO userDTO=new UserDTO();
userDTO.setUserName("reply:hello "+userName);
return userDTO.getUserName();
}
}
order-service使用OpenFegin对应调用代码
@FeignClient(name = "pay-service")
public interface PayService {
@GetMapping(value = "/pay/byGet")
public String byGet(@RequestParam("userName") String userName);
@PostMapping(value = "/pay/byPost")
public String byPost(@RequestBody UserDTO userDTO);
@GetMapping(value = "/pay/byPath/{userName}")
public String byPath(@PathVariable("userName") String userName);
}
@SpringBootApplication
@ComponentScan("vip.codehome")
@EnableFeignClients(basePackages = "vip.codehome.order.service.remote")
@EnableDiscoveryClient
public class OrderBoot {
public static void main(String[] args) {
SpringApplication.run(OrderBoot.class, args);
}
}
Fegin常用配置
官方文档地址:https://docs.spring.io/spring-cloud-openfeign/docs/current/reference/html/#spring-cloud-feign
开启日志
@Configuration
public class FeignConfig {
@Bean
public Logger.Level feignLoggerLevel() {
return Logger.Level.FULL;
}
}
spring:
level:
vip.codehome.order.service.remote: DEBUG # 替换为你的Feign客户端所在的包名
使用okhttp
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-okhttp</artifactId>
<version>13.3</version>
</dependency>
feign:
okhttp:
enabled: true
版权声明:
本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自
编程之家!
喜欢就支持一下吧