在上篇文章的基础上我们来介绍下Feign的请求参数的问题
1.单个参数
首先来看下单个参数的情况
1.1.service服务
在service服务中我们增加一个接收单个参数的方法
/**
* @BelongsProject: springcloud0310
* @BelongsPackage: com.bruceliu.api
* @Author: bruceliu
* @CreateTime: 2020-03-10 23:50
* @Description: TODO
*/
(value = "SPRINGCLOUD-PRODUCER-DEMO")
public interface UserClientService {
("/all")
public List<User> queryUsers();
/**
* 根据id查询用户信息
* Feign本身也是基于http请求的客户端
* 在接收参数时我们需要通过@RequestParam注解来指明要接收的参数
* @param id
* @return
*/
("/getUserById")
public User getUserById( ("id") Integer id);
}
1.2.provider服务
因为service服务的定义修改了,所以我们需要增加provider的服务
/**
* @BelongsProject: springcloud0310
* @BelongsPackage: com.bruceliu.controller
* @Author: bruceliu
* @
* @CreateTime: 2020-03-10 11:39
* @Description: TODO
*/
public class UserController {
private UserService userService;
/**
* 根据id查询用户信息
* @param id
* @return
*/
("/getUserById")
public User getProductById(Integer id){
return userService.queryById(id);
}
}
1.3.consumer服务
消费者中直接通过feign调用服务即可。
/**
* @author bruceliu
* @create 2019-10-15 15:32
* @description
*/
("prototype")
("consumer")
public class ConsumerController {
UserClientService userClientService;
(value="/get",method= RequestMethod.GET)
public User getProductById( ("id") Integer id){
return this.userClientService.getUserById(id);
}
("/test")
public List<User> consumerTest(){
return userClientService.queryUsers();
}
}
启动服务访问:
2.多个参数
service服务
/**
* GET方式
* 获取多个参数
* 注意:GET方式 形参必须多个分开
*/
("/getUserByAgeAndSex")
public User getUserByAgeAndSex( ("age") Integer age, ("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
*/
public class UserController {
private UserService userService;
("/getUserByAgeAndSex")
public User getUserByAgeAndSex( ("age") Integer age, ("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
*/
("prototype")
("consumer")
public class ConsumerController {
UserClientService userClientService;
("/getUserByAgeAndSex")
public User getUserByAgeAndSex( ("age") Integer age, ("sex") int sex){
return userClientService.getUserByAgeAndSex(age,sex);
}
}
启动服务访问:
3.对象参数
3.1.service服务
在service服务中我们增加一个接收单个参数的方法
/**
* @BelongsProject: springcloud0310
* @BelongsPackage: com.bruceliu.api
* @Author: bruceliu
*
* @CreateTime: 2020-03-10 23:50
* @Description: TODO
*/
(value = "SPRINGCLOUD-PRODUCER-DEMO")
public interface UserClientService {
("/addUser")
public int addUser( User user);
}
3.2.服务层接口
/**
* @BelongsProject: springcloud0310
* @BelongsPackage: com.bruceliu.controller
* @Author: bruceliu
* @CreateTime: 2020-03-10 11:39
* @Description: TODO
*/
public class UserController {
private UserService userService;
("/addUser")
public int addUser( User user){
System.out.println("新的对象是:"+user);
return userService.addUser(user);
}
}
3.3.调用
/**
* @author bruceliu
* @create 2019-10-15 15:32
* @description
*/
("prototype")
("consumer")
public class ConsumerController {
UserClientService userClientService;
("/addUser")
public int addUser(User user){
System.out.println("表单数据是:"+user);
return userClientService.addUser(user);
}
}
3.4.测试