首页 > 解决方案 > 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

}

标签: javaspring-boot

解决方案


我已经在我的机器上测试了以下解决方案及其工作。您需要在查询参数中传递信息,如下例所示:

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);

推荐阅读