Springcloud中Feign传递参数的过程解析

 更新时间:2023年09月29日 10:10:23   作者:敢敢变成了憨憨  
这篇文章主要介绍了Springcloud中Feign传递参数的过程,单个参数的传值有两种方式,第一种使用@RequestParam/@PathVariable进行传值,传递多个参数:多个参数的传值可以使用多个@RequestParam来进行传参,需要的朋友可以参考下

传递单个参数:

单个参数的传值有两种方式,第一种使用@RequestParam/@PathVariable进行传值

客户端feign调用接口(@RequestParam)

 @RequestMapping("/ct/selectOne")
    Customer selectOne(@RequestParam("id") Integer id);

服务提供端

 @RequestMapping("selectOne")
    public Customer selectOne(Integer id) {
        return this.customerService.queryById(id);
    }

客户端feign调用接口(@PathVariable)

 @GetMapping("/admin/selectOne/{id}")
    String selectOne(@PathVariable("id") Integer id);

服务提供端

@RequestMapping("selectOne/{id}")
    @HystrixCommand(fallbackMethod = "HystrixqueryById")
        public Admin selectOne(@PathVariable("id") Integer id) {
        Admin bean = adminService.queryById(id);
        if(bean == null){
            throw new RuntimeException("id:"+id+"没有找到该id的用户");
        }
            return bean;
    }

注意:

1、在使用@RequestParam/@PathVariable进行传值时,一定要注意,需要绑定参数,如@RequestParam(“id”)绑定id,不然会报错

2、@PathVariable是获取url上数据的,@RequestParam获取请求参数的(包括post表单提交)

传递多个参数:多个参数的传值可以使用多个@RequestParam来进行传参

客户端feign调用接口 

    @RequestMapping("/ct/upload")
    Customer upload(@RequestParam("newFileName") String newFileName,
                      @RequestParam("id")  int id);
 

服务提供端

 @RequestMapping("upload")
    public Customer upload(String newFileName,int id) throws IOException {
        System.out.println("进入提供者-图片上传");
        //设置图片上传路径,是目标文件夹的路径
        // 保存到数据库
        Customer  customer=customerService.queryById(id);
        customer.setImage(newFileName);
        customerService.update(customer);
        return customer;
    }

传对象:

传对象有两种方式

第一种,使用@SpringQueryMap注解实现

客户端feign调用接口

 @RequestMapping("/ev/insert")
    Evaluation insert(@SpringQueryMap Evaluation evaluation);

服务提供端

 @PostMapping("save")
    public Object save(@RequestBody Admin admin){
        boolean result = false;
        //判断是添加还是编辑
        if(admin.getId()!=null){
            //编辑
          //  System.out.println("编辑管理员信息");
            result = adminService.update(admin)>0;
        } else {
            //添加
            admin.setRegDate(new Date());
        //    System.out.println("添加管理员信息"+admin);
            result = adminService.insert(admin).getId() != null;
        }
        return  result;
    }

重点:多个参数+对象的传值

在进行多个参数+对象传值时,使用@RequestParam来传递普通参数,使用@SpringQueryMap来传递对象

注:本人亲测踩坑使用@RequestParam+@RequestBody的时候,出现问题@RequestBody要求前端页面返回json格式,否则会报:不支持Content-Type:application/json的错误

客户端feign调用接口 

    @RequestMapping(value = "/admin/queryAll", method = RequestMethod.POST)
    String queryAll(@RequestParam("page") Integer page,
                    @RequestParam("limit") Integer limit,
                    @SpringQueryMap AdminQuery admin);

服务提供端

 @PostMapping("queryAll")
    public Object queryAll(Integer page, Integer limit,AdminQuery admin) {
        CommonResult<Admin> result = new CommonResult<>();
        IPage<Admin> ipage = adminService.queryAllByLimit(page,limit,admin);
        result.setCode(0);
        result.setCount(ipage.getTotal());
        result.setData(ipage.getRecords());
        return result;
    }
 

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

相关文章

  • Java的Hibernate框架中的继承映射学习教程

    Java的Hibernate框架中的继承映射学习教程

    Hibernate中的映射可以将类与表对应,并利用类的继承特性,这里我们就来看一下Java的Hibernate框架中的继承映射学习教程
    2016-07-07
  • Java如何为 PPT 中的图形添加阴影效果

    Java如何为 PPT 中的图形添加阴影效果

    这篇文章主要介绍了Java如何为 PPT 中的图形添加阴影效果,帮助大家更好的利用java处理图像,感兴趣的朋友可以了解下
    2020-09-09
  • 聊聊SpringBoot的@Scheduled的并发问题

    聊聊SpringBoot的@Scheduled的并发问题

    这篇文章主要介绍了聊聊SpringBoot的@Scheduled的并发问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • mybatis创建项目报Invalid bound statement (not found)错误解决方法

    mybatis创建项目报Invalid bound statement (not found)错误解决方法

    使用MyBatis能够帮助我们将SQL语句和Java代码分离,这篇文章主要给大家介绍了关于mybatis创建项目报Invalid bound statement (not found)错误的解决方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • SpringBoot如何通过配置文件(yml,properties)限制文件上传大小

    SpringBoot如何通过配置文件(yml,properties)限制文件上传大小

    这篇文章主要介绍了SpringBoot如何通过配置文件(yml,properties)限制文件上传大小,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Mybatis详细对比一级缓存与二级缓存

    Mybatis详细对比一级缓存与二级缓存

    MyBatis 包含一个非常强大的查询缓存特性,它可以非常方便地配置和定制,缓存可以极大的提升查询效率。MyBatis中默认定义了两级缓存,分别是一级缓存和二级缓存
    2022-10-10
  • java开源区块链初始化创世区块jdchain服务搭建

    java开源区块链初始化创世区块jdchain服务搭建

    这篇文章主要介绍了java开源区块链初始化创世区块jdchain的服务搭建步骤,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-02-02
  • SpringBoot AOP使用笔记

    SpringBoot AOP使用笔记

    今天小编就为大家分享一篇关于SpringBoot AOP使用笔记,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • springboot配置mybatis和事务管理方式

    springboot配置mybatis和事务管理方式

    这篇文章主要介绍了springboot配置mybatis和事务管理方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • Javaweb中使用Jdom解析xml的方法

    Javaweb中使用Jdom解析xml的方法

    Jdom是一个开源项目,基于树形结构,利用纯java的技术对XML文档实现解析,生成,序列化以及多种操作.这篇文章主要介绍了Javaweb中使用Jdom解析xml的方法的相关资料,需要的朋友可以参考下
    2016-09-09

最新评论