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)
上一篇 2020年11月12日 上午9:48
下一篇 2020年11月12日 上午9:48


相关推荐

  • 2017年java培训机构排名[通俗易懂]

    2017年java培训机构排名[通俗易懂]俗话说360行,行行转IT,在如今这个互联网横行的时代,做一个Java开发工程师可以算得上是集智慧,钞票为一身的光鲜职业了,尤其是在北上广这一线城市,年薪30w的黄金小鲜肉随处可见,这也是许多高校毕业生,甚至是其它行业工作数年后都望尘莫及的。因为梦想高薪,跨专业,转行的人比比皆是,也就免不了和一些Java培训机构打交道,而如今这世道教育机构也不见得都那么有“良心”就拿北京来说吧,大大小小的Java培训机构不下5000家,这里边有正规做良心教育的,也有浑水摸鱼什么都不是的,有面向全国招生的,也有面向全国“诈骗

    2022年10月4日
    4
  • for循环和while循环区别

    for循环和while循环区别for 循环 while 循环旨在与迭代一个数组 最终完成结果一样 区别 for 循环变量的作用域在于 for 循环内 而 while 循环变量的作用域在 while 外部 for inti 0 i lt 5 i nbsp nbsp i 在 for 循环内部 外部不可能使用这个 i 值 intj 0 while j lt 5 在该 while 循环执行完后 j 变量依然可以操作 j

    2025年9月2日
    5
  • BS架构与CS架构_bs架构 可视化开发框架

    BS架构与CS架构_bs架构 可视化开发框架Client/Server结构1、传统的两层CS模式CS模式的主要特点:请求/响应工作方式、以消息交换作为通信方式、基于过程的服务访问、服务集中于特定的服务器。S为C提供了系统定义的各种服务,为用户提供了一种有效地资源共享手段。与传统的分时共享模式和资源共享模式相比较,C/S具有如下优点:a,优化网络利用率,减少网络流量;b,响应时间短;c,通过把应用程序同它们处理的数据隔离,可以使数据具有独立性…

    2025年10月19日
    4
  • aws亚马逊磁盘扩展卷步骤

    aws亚马逊磁盘扩展卷步骤

    2022年2月15日
    63
  • ecilpse运行Tomcat显示端口被占用Several ports (8005, 8080, 8009)「建议收藏」

    ecilpse运行Tomcat显示端口被占用Several ports (8005, 8080, 8009)「建议收藏」ecilpse运行Tomcat显示端口被占用Several ports (8005, 8080, 8009)

    2022年4月24日
    55
  • 笔记之kafuka「建议收藏」

    笔记之kafuka「建议收藏」#########################1、启动集群每个节点的进程###################################nohupkafka-server-start.sh/home/hadoop/apps/kafka_2.11-1.1.0/config/server.properties1&amp;amp;amp;gt;~/kafkalogs/kafka_…

    2022年6月9日
    35

发表回复

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

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