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)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • Effective C++ — 继承和面向对象设计

    Effective C++ — 继承和面向对象设计

    2022年1月5日
  • 【深度学习入门】——亲手实现图像卷积操作[通俗易懂]

    【深度学习入门】——亲手实现图像卷积操作[通俗易懂]深度学习中有一个很重要的概念就是卷积神经网络CNN,卷积神经网络中又有卷积层、池化层的概念。尤其是卷积层,理解难度比较大,虽然书中或者是视频中都有详细介绍过它的基础概念,但对于求知欲望很强烈的我,我总心里痒痒的,总想亲手实现,看看效果,怕的就是自己会眼高手低,做技术人最可怕的就是眼高手低。所以,我打算用python来亲自验证一遍。什么是卷积?卷积(convolution)是数学知…

    2022年5月8日
  • portraiture 3 mac(最强ps人像美化磨皮滤镜)内附安装教程

    portraiture 3 mac(最强ps人像美化磨皮滤镜)内附安装教程imagenomicportraituremac是一款非常强大的ps人像美化磨皮滤镜,可以更好的辅佐我们的ps进行人像滤镜美化处理。portraituremac激活成功教程版能够智能的对图像中的肤色、毛发以及眉毛等部位进行滤镜抛光处理,细节处理,以减少瑕疵。portraituremac激活成功教程版基本上是人人都能用得上的ps辅助工具,有了它处理人像效果更加显著。小编现为您带来portraiture3滤镜下载,需要的小伙伴快来下载吧!下载地址:https://mac.orsoon.com/Mac/167.

    2022年7月22日
  • 状况与状态区别_402状态码

    状况与状态区别_402状态码http状态码301和302详解及区别一直对http状态码301和302的理解比较模糊,在遇到实际的问题和翻阅各种资料了解后,算是有了一定的理解。这里记录下,希望能有新的认识。大家也共勉。官方的比较简洁的说明:301redirect:301代表永久性转移(PermanentlyMoved)302redirect:302代表…

    2022年10月3日
  • ASP.NET MVC商城网站后台管理系统

    ASP.NET MVC商城网站后台管理系统本项目使用了大量的插件,所有的商品数据皆为动态加载,全部从数据库中读取呈现在界面上,具备商品管理、用户管理等功能,还可查看商品的相关数据汇总。本项目对应的网上商城在上一篇文章中。界面展示(部分)代码太多了,就不进行部分展示了。…

    2022年9月27日
  • Wappalyzer 网站技术分析软件「建议收藏」

    Wappalyzer 网站技术分析软件「建议收藏」Wappalyzer工具支持分析目标网站所采用的平台构架、网站环境、服务器配置环境、JavaScript框架、编程语言等参数,同时还可以显示目标站点使用该技术的网站比例,例如有多少网站使用的是Wordpress、有多少网站使用AddThis第三方服务,其他还有网页服务器、分析工具、CDN、留言系统、控制台、网络空间等等,可以让你从使用比例中得出目前最流行的技术。使用方法:1.打开

    2022年5月12日

发表回复

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

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