Spring Cloud Feign多参数传递以及注意的问题

这边沿用前面的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服务:


启动成功!!!!

五 : 使用工具调用这几个方法进行测试




成功调用两个方法!!!!

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值