Spring Cloud Feign多参数传递以及注意的问题
这边沿用前面的Eureka,Feign,Service一 : 在服务提供者cloud-shop-userservice中新增几个方法/*** 保存用户* 2018年1月18日*/@PostMapping("/user")public String aveUser(@RequestBody User user) {logger.info("保存用户 :" +user.
·
这边沿用前面的Eureka,Feign,Service
一 : 在服务提供者cloud-shop-userservice中新增几个方法
/**
* 保存用户
* 2018年1月18日
*/
@PostMapping("/user")
public String aveUser(@RequestBody User user) {
logger.info("保存用户 :" +user.toString());
return "Success";
}
/**
* 根据用户名和密码查询用户
* 2018年1月18日
*/
@GetMapping("/findUser")
public User findUserByNameAndPassword(String name ,String password) {
logger.info("name :"+name +"---password :" +password);
User user= new User();
user.setName(name);
user.setPassword(password);
return user;
}
二 : 修改feign的UserService,新增对应的方法
package cn.sh.daniel.service;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import cn.sh.daniel.entity.User;
@FeignClient(value = "cloud-shop-userservice")
public interface UserService {
@GetMapping("/user/{id}")
public User findUserById(@PathVariable("id")Long id);
@PostMapping("/user/user")
public String aveUser(@RequestBody User user) ;
@GetMapping("/user/findUser")
public User findUserByNameAndPassword(String name ,String password);
}
三 : 在feign的controller中调用方法
/**
* 保存用户
* 2018年1月18日
*/
@PostMapping("/user")
public String aveUser(@RequestBody User user) {
return userService.aveUser(user);
}
/**
* 根据用户名和密码查询用户
* 2018年1月18日
*/
@GetMapping("/findUser")
public User findUserByNameAndPassword(String name ,String password) {
return userService.findUserByNameAndPassword(name, password);
}
四 : 重启修改过的服务,查看服务注册是否正常
在启动过程中可以发现Feign服务启动报错:
为什么会报错呢?
这个方法有两个参数,而Feign去映射的时候它不会去自动给你区分那个参数是哪个,会直接给你报错
解决方法: 添加注解,自己去指定要映射的属性
重新启动Feign服务:
启动成功!!!!
五 : 使用工具调用这几个方法进行测试
成功调用两个方法!!!!
更多推荐
已为社区贡献4条内容
所有评论(0)