首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

OpenFeign服务调用

一、OpenFeign的介绍

OpenFeign是一个声明式的http客户端,让编写web服务客户端变的非常容易,只需要创建一个接口并在接口上添加注解即可,OpenFeign是SpringCloud在Feign的基础上支持了SpringMVC的注解,并通过动态代理的方式产生实现类来做负载均衡并进行调用其他服务。

二、OpenFeign基本使用

我们以商品模块作为服务的提供方,给订单服务调用。

引入依赖:给服务的调用方引入OpenFeign依赖

org.springframework.cloud

spring-cloud-starter-openfeign

配置类上添加注解开启Feign功能

@SpringBootApplication

@EnableDiscoveryClient

@EnableFeignClients // 开启Feign客户端

public class OrderApplication {

public static void main(String[] args) {

SpringApplication.run(OrderApplication.class,args);

}

}

声明接口,配置注解

@FeignClient("coding-product") // 服务提供者【商品服务】的服务名称

public interface FeignProductService {

// 服务提供者的接口地址

@GetMapping("/coding-product/product")

String getProduct();

}

在控制器中使用Feign接口

@RestController()

public class OrderController {

@Autowired

private FeignProductService feignProductService;

@GetMapping("/product")

public String getProduct(){

return feignProductService.getProduct();

}

}

三、参数传递

1、路径中拼接参数

提供的服务【商品服务】

@GetMapping("/product/{id}")

public String getProductById(@PathVariable("id") Integer id){

return "商品服务测试..."+id;

}

Feign接口【订单服务】

@GetMapping("/coding-product/product/{id}")

String getProductById(@PathVariable("id") Integer id);

消费的服务【订单服务】

@GetMapping("/product/{id}")

public String getProductById(@PathVariable("id") Integer id){

return feignProductService.getProductById(id);

}

2、?拼接参数,对应常见GET请求

提供的服务【商品服务】

@GetMapping("/product")

public String getProduct(@RequestParam("id") Integer id){

return "商品服务测试..."+id;

}

Feign接口【订单服务】

@GetMapping("/coding-product/product")

String getProduct(@RequestParam("id") Integer id);

消费的服务【订单服务】

@GetMapping("/product")

public String getProduct(@RequestParam("id") Integer id){

return feignProductService.getProduct(id);

}

3、请求体传递参数,对应常见POST请求

提供的服务【商品服务】

@PostMapping("/product")

public String addProduct(@RequestBody Map map){

return "商品服务测试..."+map;

}

Feign接口【订单服务】

@PostMapping("/coding-product/product")

String addProduct(@RequestBody Map map);

消费的服务【订单服务】

@PostMapping("/product")

public String addProduct(@RequestBody Map map){

return feignProductService.addProduct(map);

}

  • 发表于:
  • 原文链接https://page.om.qq.com/page/O3-MZW01svmjJzPL07rJ_zjA0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券