spring-cloud feign的多参数传递方案

查看原文

一、GET请求多参数URL

1、方法一(推荐)

@FeignClient(“microservice-provider-user”)

public interface UserFeignClient {

@GetMapping("/get")

public User get0(@SpringQueryMap User user);

}

2、方法二(推荐)

@FeignClient(name = “microservice-provider-user”)

public interface UserFeignClient {

@RequestMapping(value = “/get”, method = RequestMethod.GET)

public User get1(@RequestParam(“id”) Long id, @RequestParam(“username”) String username);

}

这是最为直观的方式,URL有几个参数,Feign接口中的方法就有几个参数。使用@RequestParam注解指定请求的参数是什么

java开发工具下载地址及安装教程大全,点这里。

更多深度技术文章,在这里。

3、方法三(不推荐)

多参数的URL也可使用Map来构建。当目标URL参数非常多的时候,可使用这种方式简化Feign接口的编写。

@FeignClient(name = “microservice-provider-user”)

public interface UserFeignClient {

@RequestMapping(value = “/get”, method = RequestMethod.GET)

public User get2(@RequestParam Map map);

}

在调用时,可使用类似以下的代码。

public User get(String username, String password) {

HashMap map = Maps.newHashMap();

map.put(“id”, “1”);

map.put(“username”, “张三”); return this.userFeignClient.get2(map);

}

注意:这种方式不建议使用。主要是因为可读性不好,而且如果参数为空的时候会有一些问题,例如map.put(“username”, null); 会导致microservice-provider-user 服务接收到的username是"" ,而不是null。

二、POST请求多参数URL

下面来讨论如何使用Feign构造包含多个参数的POST请求。假设服务提供者的Controller是这样编写的:

@RestController public class UserController {

@PostMapping("/post")

public User post(@RequestBody User user) {

}

}

我们要如何使用Feign去请求呢?答案非常简单,示例:

@FeignClient(name = “microservice-provider-user”)

public interface UserFeignClient {

@RequestMapping(value = “/post”, method = RequestMethod.POST)

public User post(@RequestBody User user);

}

原创文章,转载请注明出处。

java开发工具下载地址及安装教程大全,点这里。

更多深度技术文章,在这里。

你可能感兴趣的:(spring-cloud feign的多参数传递方案)