java - SpringBoot:如何发送和访问HashMap通过一个 RestTemplate HttpGet 请求?
问题描述
我是 SpringBoot 的新手,并试图弄清楚一些事情。我将 HashMap 作为 RestTemplate HttpMethod.GET 调用的一部分发送。我的问题是,我作为请求的一部分发送 HashMap 的方式是否正确,如果正确,我们如何从 MicroService2 访问 HashMap 值?
微服务 1
Map<String, String> map=new HashMap<>();
map.put("name", "abc");
HttpEntity<Map<String, String>> entity=new HttpEntity<>(map, headers);
restTemplate.exchange("http:localhost:8080/getdata", HttpMethod.GET, entity , Object.class);
现在如何获取从 MicroService 1 传递过来的 HashMap 的值。
微服务 2
@GetMapping("/getdata")
Object getData(@RequestParam HashMap<String,String> user){
sysout(user) // Null
}
解决方案
我已经在我的机器上测试了以下解决方案及其工作。您需要在查询参数中传递信息,如下例所示:
RestTemplate restTemplate = new RestTemplate();
HttpHeaders header = new HttpHeaders();
header.add("headerName", "headerValue");
HttpEntity<String> entity = new HttpEntity<>(header);
UriComponentsBuilder uriComponentsBuilder = UriComponentsBuilder.fromUriString("http://localhost:8080/getdata");
//add data as a query params
uriComponentsBuilder.queryParam("name", "abc");
restTemplate.exchange(uriComponentsBuilder.toUriString(), HttpMethod.GET, entity , Object.class);
推荐阅读
- assembly - 汇编 x86 中的 Imul 指令
- java - 解释为什么 FXML 对象为空
- reactjs - 无法在 reactjs 中使用 draw2d - 无法读取未定义的属性“x”
- node.js - fs.writeFile 和 writeFileSync 在 NodeJS 中保存空文件
- sql - 使用行号获取最新记录的记录,使用连接获取分区
- python-3.x - Numpy:改变一个数组的元素值,有点奇怪
- mule - 将子集数组与 Mule 4 (DW2.0) 中的主数组进行比较
- google-chrome-devtools - 如何使用 Chrome 开发控制台更改网页字体?
- python - 如何在python中删除多余的字符串
- node.js - 将数组转换为 mongo ObjectID .....nodejs