Spring Cloud之远程调用OpenFeign参数传递

 更新时间:2025年03月14日 12:19:30   作者:新绿MEHO  
本文介绍了Spring Cloud中使用OpenFeign进行远程调用时,参数传递的不同方式,包括传递单个参数、多个参数、对象和JSON数据,感兴的朋友一起看看吧

OpenFeign参数传递

传递单个参数

服务提供方product-service

@RequestMapping("/product")
@RestController
public class ProductController {
    @Autowired
    private ProductService productService;
    @RequestMapping("/p1")
    public String p1(Integer id){
        return "product-service 接收到参数, id:"+id;
    }
}

Feign客户端

@FeignClient(value = "product-service",path = "/product")
public interface ProductApi {
    @RequestMapping("/p1")
    String p1(@RequestParam("id") Integer id);
}

远程调用方order-service

@RequestMapping("/feign")
@RestController
public class FeignController {
    @Autowired
    private ProductApi productApi;
    @RequestMapping("/o1")
    public String o1(Integer id){
        return productApi.p1(id);
    }
}

 启动服务并访问

传递多个参数

服务提供方product-service

@RequestMapping("/product")
@RestController
public class ProductController {
    @Autowired
    private ProductService productService;
    @RequestMapping("/p2")
    public String p2(Integer id, String name){
        return "product-service 接收到参数, id:"+id+",name:"+name;
    }
}

Feign客户端

@FeignClient(value = "product-service",path = "/product")
public interface ProductApi {
    @RequestMapping("/p2")
    String p2(@RequestParam("id") Integer id, @RequestParam("name") String name);
}

远程调用方order-service

@RequestMapping("/feign")
@RestController
public class FeignController {
    @Autowired
    private ProductApi productApi;
    @RequestMapping("/o2")
    public String o2(Integer id, String name){
        return productApi.p2(id,name);
    }
}

启动服务并访问

传递对象

服务提供方product-service

@RequestMapping("/product")
@RestController
public class ProductController {
    @Autowired
    private ProductService productService;
    @RequestMapping("/p3")
    public String p3(ProductInfo productInfo){
        return "product-service 接收到参数: productInfo"+productInfo.toString();
    }
}

Feign客户端

@FeignClient(value = "product-service",path = "/product")
public interface ProductApi {
    @RequestMapping("/p3")
    String p3(@SpringQueryMap ProductInfo productInfo);
}

远程调用方order-service

@RequestMapping("/feign")
@RestController
public class FeignController {
    @Autowired
    private ProductApi productApi;
    @RequestMapping("/o3")
    public String o3(){
        ProductInfo productInfo = new ProductInfo();
        productInfo.setId(45);
        productInfo.setProductName("T恤");
        return productApi.p3(productInfo);
    }
}

启动服务并访问

传递JSON

服务提供方product-service

@RequestMapping("/product")
@RestController
public class ProductController {
    @Autowired
    private ProductService productService;
    @RequestMapping("/p4")
    public String p4(@RequestBody ProductInfo productInfo){
        return "product-service 接收到参数: productInfo"+productInfo.toString();
    }
}

Feign客户端

@FeignClient(value = "product-service",path = "/product")
public interface ProductApi {
    @RequestMapping("/p4")
    String p4(@RequestBody ProductInfo productInfo);
}

远程调用方order-service

@RequestMapping("/feign")
@RestController
public class FeignController {
    @Autowired
    private ProductApi productApi;
    @RequestMapping("/o4")
    public String o4(){
        ProductInfo productInfo = new ProductInfo();
        productInfo.setId(46);
        productInfo.setProductName("T恤46");
        return productApi.p4(productInfo);
    }
}

启动服务并访问

到此这篇关于Spring Cloud之远程调用OpenFeign参数传递的文章就介绍到这了,更多相关Spring Cloud OpenFeign参数传递内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • spring AOP定义AfterThrowing增加处理实例分析

    spring AOP定义AfterThrowing增加处理实例分析

    这篇文章主要介绍了spring AOP定义AfterThrowing增加处理,结合实例形式分析了spring面向切面AOP定义AfterThrowing相关实现步骤与操作技巧,需要的朋友可以参考下
    2020-01-01
  • 带你详细了解Java值传递和引用传递

    带你详细了解Java值传递和引用传递

    这篇文章主要介绍了带你详细了解Java值传递和引用传递,文中有非常详细的代码示例,对正在学习java的小伙伴们有一定的帮助,需要的朋友可以参考下
    2021-04-04
  • 基于MyBatis的parameterType传入参数类型

    基于MyBatis的parameterType传入参数类型

    这篇文章主要介绍了基于MyBatis的parameterType传入参数类型,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • Spring中的注解@Value("#{}")与@Value("${}")的区别介绍

    Spring中的注解@Value("#{}")与@Value("${}")的区别

    这篇文章主要介绍了Spring中的注解@Value(“#{}“)与@Value(“${}“)的区别到底是什么,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06
  • Java数字签名算法DSA实例详解

    Java数字签名算法DSA实例详解

    这篇文章主要介绍了Java数字签名算法DSA,结合实例形式分析了Java数字签名算法DSA具体定义与使用技巧,需要的朋友可以参考下
    2018-05-05
  • 关于弗洛伊德算法求最短路径详解

    关于弗洛伊德算法求最短路径详解

    这篇文章主要介绍了关于弗洛伊德算法求最短路径详解,弗洛伊德算法VS迪杰斯特拉算法:迪杰斯特拉算法通过选定的被访问顶点,求出从出发访问顶点到其他项点的最短路径:弗洛伊德算法中每-个顶点都是出发访问点,需要的朋友可以参考下
    2023-07-07
  • 基于java实现DFA算法代码实例

    基于java实现DFA算法代码实例

    这篇文章主要介绍了基于java实现DFA算法代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • jmeter实现接口关联的两种方式(正则表达式提取器和json提取器)

    jmeter实现接口关联的两种方式(正则表达式提取器和json提取器)

    Jmeter用于接口测试时,后一个接口经常需要用到前一次接口返回的结果,本文主要介绍了jmeter实现接口关联的两种方式,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • 使用linux部署Spring Boot程序

    使用linux部署Spring Boot程序

    springboot程序在linux服务器上应该怎么部署?这次就分享下linux下如何正确部署springboot程序,感兴趣的朋友一起看看吧
    2018-01-01
  • Reactor中的onErrorContinue 和 onErrorResume

    Reactor中的onErrorContinue 和 onErrorResume

    这篇文章主要介绍了Reactor中的onErrorContinue 和 onErrorResume,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-09-09

最新评论