前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringCloud(七)—OpenFeign访问带有参数的控制器

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

作者头像
全栈程序员站长
发布2022-06-29 11:28:29
7450
发布2022-06-29 11:28:29
举报
文章被收录于专栏:全栈程序员必看

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

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

代码语言:javascript
复制
@RequestMapping("/service2")
public String service2(String name,int age){
   
    System.out.println("name:"+name+",age:"+age);
    return "name:"+name+",age:"+age;
}

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

代码语言:javascript
复制
@RequestMapping("/service2")
String suiyi2(@RequestParam("name") String name123,@RequestParam int age);

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

1.2.1 传递请求体数据

如果feign接口中方法参数没有写注解,表示把该参数值设置到请求体中,在服务端中必须添加@RequestBody接收,但是由于请求体数据特性,feign接口方法最多只能出现一个不带有注解的参数,否则出现违法状态异常.

在这里插入图片描述
在这里插入图片描述

但是允许feign接口方法参数列表中,一个参数不带有注解,其他都带有注解,表示不带有注解的参数设置到请求体中,其他参数为普通表单参数.

2.传递请求体数据

2.1服务端

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

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

2.2客户端

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

代码语言:javascript
复制
@RequestMapping("/service3")
String suiyi3(Map<String,Object> map);

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

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

3.1服务方

代码语言:javascript
复制
@RequestMapping("/service5")
public String service5(@RequestBody String name,int age,String address){
   
    System.out.println(name+","+age+","+address);
    return name+","+age+","+address;
}

3.2客户端

代码语言:javascript
复制
@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服务端的控制器

代码语言:javascript
复制
@RequestMapping("/service6/{name}/{age}")
public String service6(@PathVariable String name,@PathVariable int age){
   
    return name+","+age;
}

5.2 客户端的feign

代码语言:javascript
复制
@RequestMapping("/service6/{name}/{age}")
String suiyi6(@PathVariable String name,@PathVariable int age);

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020年11月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.带有简单数据类型参数
    • 1.1 服务端项目中添加控制器方法
      • 1.2 客户端中feign接口中给的方法
        • 1.2.1 传递请求体数据
    • 2.传递请求体数据
      • 2.1服务端
        • 2.2客户端
        • 3.既包含请求体数据,又包含普通表单数据
          • 3.1服务方
            • 3.2客户端
            • 4.关于请求体和普通参数的总结
            • 5.Restful方式
              • 5.1服务端的控制器
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档