SpringCloud(七)—OpenFeign访问带有参数的控制器

SpringCloud(七)—OpenFeign访问带有参数的控制器

1.带有简单数据类型参数

1.1 服务端项目中添加控制器方法

@RequestMapping("/service2")
public String service2(String name,int age){
   
    System.out.println("name:"+name+",age:"+age);
    return "name:"+name+",age:"+age;
}

1.2 客户端中feign接口中给的方法

@RequestMapping("/service2")
String suiyi2(@RequestParam("name") String name123,@RequestParam int age);

注意点:如果Feign接口方法参数名和调用控制器参数名相同可以省略@RequestParam的参数。

1.2.1 传递请求体数据

如果feign接口中方法参数没有写注解,表示把该参数值设置到请求体中,在服务端中必须添加@RequestBody接收,但是由于请求体数据特性,feign接口方法最多只能出现一个不带有注解的参数,否则出现违法状态异常.
在这里插入图片描述
但是允许feign接口方法参数列表中,一个参数不带有注解,其他都带有注解,表示不带有注解的参数设置到请求体中,其他参数为普通表单参数.

2.传递请求体数据

2.1服务端

请求体数据可以是一个实体类,也可以是集合,更可以是简单数据类型

@RequestMapping("/service3")
public String service3(@RequestBody Map<String,Object> map){
   
    System.out.println(map);
    return map.toString();
}
@RequestMapping("/service4")
public String service4(@RequestBody String name){
   
    System.out.println("name:"+name);
    return "name:"+name;
}

2.2客户端

feign接口中方法参数都没有@RequestParam注解

@RequestMapping("/service3")
String suiyi3(Map<String,Object> map);

@RequestMapping("/service4")
String suiyi4(String name);

3.既包含请求体数据,又包含普通表单数据

3.1服务方

@RequestMapping("/service5")
public String service5(@RequestBody String name,int age,String address){
   
    System.out.println(name+","+age+","+address);
    return name+","+age+","+address;
}

3.2客户端

@RequestMapping("/service5")
String suiyi5(String name,@RequestParam int age,@RequestParam String address);

4.关于请求体和普通参数的总结

1.在客户端的feign中,如果方法参数不加注解,则表示用请求体传递参数,在服务端中必须用@RequestBody注解来接收,但由于请求体数据特性,在feign中只允许只有一个参数不加注解
2.在客户端的feign中,如果方法参数中添加了注解@RequestParam,则表示用普通方法传递参数,在服务端中不需要添加注解

5.Restful方式

由于SpringMVC支持Restful请求方式,所以在Feign接口中可以按照restful传递参数

5.1服务端的控制器

@RequestMapping("/service6/{name}/{age}")
public String service6(@PathVariable String name,@PathVariable int age){
   
    return name+","+age;
}

5.2 客户端的feign

@RequestMapping("/service6/{name}/{age}")
String suiyi6(@PathVariable String name,@PathVariable int age);
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/2327.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • DVP和MIPI接口的简单区别

    DVP和MIPI接口的简单区别区别1、DVP接口:DVP是并行传输,传输速度较慢,传输的带宽低。2、MIPI接口:MIPI是差分串行传输,速度快,抗干扰。目前分为D/C/MPHY三类。主流手机模组现在是使用MIPI_DPHY或CPHY传输:DPHY传输时使用4对差分信号传输图像数据和一对差分时钟信号。CPHY使用3组每组3根单端信号传输数据,每根单端信号能表达3个逻辑电平,相比数据传输率更高,使用引脚数更少。1、DVP接口:使用需要PCLK\sensor输出时钟、MCLK(XCLK)\外部时钟输入、VSYNC\场同步、

    2022年6月1日
    156
  • CEGUI-专用游戏界面开发库

    CEGUI-专用游戏界面开发库
    转载请注明原帖地址:http://www.unpack.cn/thread-62011-1-1.html
    本文来自:UPK软件安全社区作者:铁打英雄
     
    下载:
    http://www.cegui.org.uk/wiki/index.php/Downloads

    更多中文教程
    http://www.ispinel.com/2010/05/26/971

    首先感谢李素颙同学的热心和耐心指导。

    2022年7月23日
    5
  • cpickle支持的python版本_Python中cPickle

    cpickle支持的python版本_Python中cPicklecPickle模块:在python中,一般可以使用pickle类来进行python对象序列化,而cPickle提供了一个更快速简单的接口,如python文档所说:“cPickle-Afasterpickle”。cPickle可以对任意一种类型的python对象进行序列化操作,比如:list,dict,甚至是一个类的对象等。而所谓的序列化,是为了能完整地保存并能够完全可逆的恢复。在cPic…

    2022年6月22日
    26
  • [经验分享] 【统计小百科】你知道AIC准则么?[通俗易懂]

    [经验分享] 【统计小百科】你知道AIC准则么?[通俗易懂]2019独角兽企业重金招聘Python工程师标准>>>…

    2022年5月23日
    77
  • Java集合汇总篇「建议收藏」

    Java集合汇总篇「建议收藏」一.集合框架Java集合框架一些列的接口和类来实现很多常见的数据结构和算法,例如LinkedList就是集合框架提供的实现了双向链表的数据结构,关于这一篇文章建议大家收藏,我会不断地完善和扩充它的内容,例如最下面的系列文章我以后也会对它进行不断的更新集合框架的接口集合框架提供了很多接口,这些接口都包含了特定的方法来实现对集合上的特定操作)我们将要学习这些接口以及子接口和它们的各种实现类,在开始之前我们先简单学习一下这些广泛运用的接口,可以看到整个集合框架,总共有三个顶级接口Collecti

    2022年7月16日
    15
  • PostgreSQL数据库psql连接报错connections on Unix domain socket “/pgsql/data/.s.PGSQL.5432“?

    PostgreSQL数据库psql连接报错connections on Unix domain socket “/pgsql/data/.s.PGSQL.5432“?问题现象[postgres@lyp~]$pg_ctl-D/pgsql/data/startwaitingforservertostart….2021-10-1501:42:31.606CST[32453]LOG:redirectinglogoutputtologgingcollectorprocess2021-10-1501:42:31.606CST[32453]HINT:Futurelogoutputwillappearin…

    2022年6月19日
    21

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号