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);
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Java吧百度贴吧,年薪60W必备

    Java吧百度贴吧,年薪60W必备思考前面提到Kafka帮我们实现了各个版本的生产者代码,其实他也可以完全不提供这份代码,因为核心的队列的功能已经实现了,这些客户端的代码也可以完全交由用户自己实现。那么假如没有官方代码,我们又该实现一些什么功能,有哪些接口,哪些方法,以及如何组织这些代码呢。带着这样的问题我们一起来思考一下!一般对于这种带有数据流转的设计,我会从由谁产生?什么数据?通往哪去?如何保证通路可靠?这几个方面来考虑。消息自然是通过应用程序构造出来并提供给生产者,生产者首先要知道需要将消息发送到哪个Bro

  • 阿里为什么要在北京建总部_阿里正式offer审批流程

    阿里为什么要在北京建总部_阿里正式offer审批流程开篇由于疫情的缘故,钉钉算是脱颖而出,下载量而话题度直线攀升,巧的是,我也在这个特殊时间里接到了阿里钉钉的邀请。本人毕业于华南地区某不知名211院校,Java方向,目前钉钉三面已经结束,基本可以说是坐上了“直通车”,收到的反馈都是比较好的,跟HR沟通感觉希望很大,按道理来说拿下offer是没有太大问题的,以下内容就是我这次的钉钉远程面试经历的一个分享和一些心得,希望对大家能够有所帮助。以下主要分享…

  • oracle insert 多行 select

    oracle insert 多行 selectinsertintosys_user_role(roleid,userid)selectroleid,useridfromsys_tmp;多行插入insertintosys_user_role(roleid,userid) selectroleid,’$B’userid from sys_user_rolewhereuserid=’$A’;

  • 最新goland永久激活破解方法

    最新goland永久激活破解方法,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • cmd u盘修复命令_cmd命令提示符怎么打开

    cmd u盘修复命令_cmd命令提示符怎么打开U盘打不开,也无法格式化运行CMD,再输入CHKDSKG:/F(这里的G:就是你要修复的盘符)操作完后,u盘一切恢复正常

发表回复

您的电子邮箱地址不会被公开。

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