来源于http://www.jylt.cc//#/detail?id=bbd601cb1959f16df2e6ec1c4799777a
1. Get请求
1.1 通过非Java对象传递参数
生产者
@RestController
@RequestMapping("/user")
public class UserController() {
// 服务提供者只有一个参数数,需要使用 `@RequestParam`注解
@GetMapping("/getUserById")
public User getUserById(@RequestParam Integer id){
// do sth...
}
// 如果服务提供者参数需要有多个,其中的每个参数都必须用`@RequestParam`注解修饰
@GetMapping("/getUserByAccountAndPassword")
public User getUserById(@RequestParam String account, @RequestParam String password){
// do sth...
}
}
消费者
@FeignClinet(name="user", path="/user")
public interface UserFeignClinet {
// 如果请求参数只有一个,需要使用 `@RequestParam`注解
@GetMapping("/getUserById")
User getUserById(@RequestParam Integer id);
// 如果请求参数有多个,其中的每个参数都必须用`@RequestParam`注解修饰
@GetMapping("/getUserByAccountAndPassword")
User getUserById(@RequestParam String account, @RequestParam String password);
}
1.2 通过Java对象传输参数
上面的例子可以看出其实通过feign请求其实也很简单,只不过当参数比较多的时候写起来还是挺麻烦的,这个时候我们可以通过对象来传递参数
java类
@Data
public class User {
private Integer id;
private String name;
private String account;
}
生产者
@RestController
@RequestMapping("/user")
public class UserController() {
// 服务提供者需要使用 `@SpringQueryMap `注解
@GetMapping("/getUser")
public User getUserById(@SpringQueryMap User user){
// do sth...
}
}
消费者
@FeignClinet(name="user", path="/user")
public interface UserFeignClinet {
// 需要使用 `@SpringQueryMap `注解
@GetMapping("/getUser")
User getUserById(@SpringQueryMap User user);
}
2. Post请求
上面介绍了基于Get方式的单参数、多参数以及通过Java对象来传递参数是如何实现的,下面我们来看一下基于Post方式的实现
2.1 通过非Java对象传递参数
使用方式参考Get请求方式中的通过非Java对象传递参数
。
2.2 通过Java对象传递参数
java类
@Data
public class User {
private Integer id;
private String name;
private String account;
}
生产者
@RestController
@RequestMapping("/user")
public class UserController() {
// 服务提供者需要使用 `@RequestBody `注解
@PostMapping("/getUser")
public User getUserById(@RequestBody User user){
// do sth...
}
}
消费者
@FeignClinet(name="user", path="/user")
public interface UserFeignClinet {
// 需要使用 `@SpringQueryMap `注解
@PostMapping("/getUser")
User getUserById(@RequestBody User user);
}