在上篇文章的基础上我们来介绍下Feign的请求参数的问题

1.单个参数

首先来看下单个参数的情况

1.1.service服务

在service服务中我们增加一个接收单个参数的方法

/**
* @BelongsProject: springcloud0310
* @BelongsPackage: com.bruceliu.api
* @Author: bruceliu

* @CreateTime: 2020-03-10 23:50
* @Description: TODO
*/
@FeignClient(value = "SPRINGCLOUD-PRODUCER-DEMO")
public interface UserClientService {

@RequestMapping("/all")
public List<User> queryUsers();

/**
* 根据id查询用户信息
* Feign本身也是基于http请求的客户端
* 在接收参数时我们需要通过@RequestParam注解来指明要接收的参数
* @param id
* @return
*/
@GetMapping("/getUserById")
public User getUserById(@RequestParam("id") Integer id);
}

1.2.provider服务

因为service服务的定义修改了,所以我们需要增加provider的服务

/**
* @BelongsProject: springcloud0310
* @BelongsPackage: com.bruceliu.controller
* @Author: bruceliu
* @
* @CreateTime: 2020-03-10 11:39
* @Description: TODO
*/
@Controller
public class UserController {

@Autowired
private UserService userService;

/**
* 根据id查询用户信息
* @param id
* @return
*/
@GetMapping("/getUserById")
@ResponseBody
public User getProductById(Integer id){
return userService.queryById(id);
}
}

1.3.consumer服务

消费者中直接通过feign调用服务即可。

/**
* @author bruceliu
* @create 2019-10-15 15:32
* @description
*/
@RestController
@Scope("prototype")
@RequestMapping("consumer")
public class ConsumerController {

@Resource
UserClientService userClientService;

@RequestMapping(value="/get",method= RequestMethod.GET)
@ResponseBody
public User getProductById(@RequestParam("id") Integer id){
return this.userClientService.getUserById(id);
}

@RequestMapping("/test")
@ResponseBody
public List<User> consumerTest(){
return userClientService.queryUsers();
}
}

启动服务访问:
玩转SpringCloud专题(十一)-SpringCloud之Feign请求参数处理_spring

2.多个参数

service服务

/**
* GET方式
* 获取多个参数
* 注意:GET方式 形参必须多个分开
*/
@GetMapping("/getUserByAgeAndSex")
public User getUserByAgeAndSex(@RequestParam("age") Integer age,@RequestParam("sex") int sex);
2.1.1.provider服务

因为service服务的定义修改了,所以我们需要增加provider的服务

/**
* @BelongsProject: springcloud0310
* @BelongsPackage: com.bruceliu.controller
* @Author: bruceliu
* @QQ:1241488705
* @CreateTime: 2020-03-10 11:39
* @Description: TODO
*/
@Controller
public class UserController {

@Autowired
private UserService userService;

@ResponseBody
@GetMapping("/getUserByAgeAndSex")
public User getUserByAgeAndSex(@RequestParam("age") Integer age,@RequestParam("sex") int sex){
HashMap<String,Object> map=new HashMap<>();
map.put("age",age);
map.put("sex",sex);
return userService.getUserByAgeAndSex(map);
}
}
2.1.2.consumer服务

消费者中直接通过feign调用服务即可。

/**
* @author bruceliu
* @create 2019-10-15 15:32
* @description
*/
@RestController
@Scope("prototype")
@RequestMapping("consumer")
public class ConsumerController {

@Resource
UserClientService userClientService;

@GetMapping("/getUserByAgeAndSex")
@ResponseBody
public User getUserByAgeAndSex(@RequestParam("age") Integer age,@RequestParam("sex") int sex){
return userClientService.getUserByAgeAndSex(age,sex);
}
}

启动服务访问:
玩转SpringCloud专题(十一)-SpringCloud之Feign请求参数处理_启动服务_02

3.对象参数

3.1.service服务

在service服务中我们增加一个接收单个参数的方法

/**
* @BelongsProject: springcloud0310
* @BelongsPackage: com.bruceliu.api
* @Author: bruceliu
*
* @CreateTime: 2020-03-10 23:50
* @Description: TODO
*/
@FeignClient(value = "SPRINGCLOUD-PRODUCER-DEMO")
public interface UserClientService {

@PostMapping("/addUser")
public int addUser(@RequestBody User user);
}

3.2.服务层接口

/**
* @BelongsProject: springcloud0310
* @BelongsPackage: com.bruceliu.controller
* @Author: bruceliu

* @CreateTime: 2020-03-10 11:39
* @Description: TODO
*/
@Controller
public class UserController {

@Autowired
private UserService userService;

@PostMapping("/addUser")
@ResponseBody
public int addUser(@RequestBody User user){
System.out.println("新的对象是:"+user);
return userService.addUser(user);
}
}

3.3.调用

/**
* @author bruceliu
* @create 2019-10-15 15:32
* @description
*/
@RestController
@Scope("prototype")
@RequestMapping("consumer")
public class ConsumerController {

@Resource
UserClientService userClientService;

@PostMapping("/addUser")
@ResponseBody
public int addUser(User user){
System.out.println("表单数据是:"+user);
return userClientService.addUser(user);
}
}

3.4.测试

玩转SpringCloud专题(十一)-SpringCloud之Feign请求参数处理_启动服务_03