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账号...