java - SpringBoot:如何通过 RestTemplate HttpMethod GET 发送对象?
问题描述
我是 SpringBoot 的新手,并试图弄清楚一些事情。我有一个请求 DTO,我想将它作为 RestTemplate HttpMethod.GET 调用的一部分发送。我们如何做到这一点?
DTO
class User {
String firstName;
String lastName;
}
微服务 1
User dto=new User("abc","xyz");
// Is this possible ?
HttpEntity<User> entity=new HttpEntity<>(dto);
restTemplate.exchange(url, HttpMethod.GET, entity, Object.class);
如果可以的话,如何在微服务 2 中获取微服务 1 传过来的 User 的值。
微服务 2
// Is this possible ?
@GetMapping("/url")
Object getData(@RequestBody User user){
}
如果以上都做不到,那如何使用HashMash来发送数据呢?
微服务 1
HashMap<String,String> map=new HashMap<>();
map.put("name", "abc");
HttpEntity<User> entity=new HttpEntity<>(map);
restTemplate.exchange(url, HttpMethod.GET, entity, Object.class);
现在如何获取从 MicroService 1 传递过来的 HashMap 的值。
微服务 2
// Is this possible ?
@GetMapping("/url")
Object getData(@RequestParam HashMap<String,String> user){
sysout(user) // Null
}
解决方案
需要使用 HTTP post 方法发送 body,get 可以有请求参数。
ResponseEntity<UserResponse> responseEntity = restTemplate.exchange(
url,
HttpMethod.POST,
requestEntity,
UserResponse.class
);
请求实体可以如下构建。
//setting up the request headers
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.setContentType(MediaType.APPLICATION_JSON);
//setting up the request body
User user = new User();
user.setName("Sample User");
user.setUsername("user1");
user.setPassword("pass123");
//request entity is created with request body and headers
HttpEntity<User> requestEntity = new HttpEntity<>(user, requestHeaders);
有关更多详细信息,请通过此链接。
推荐阅读
- python - 使用 Python 将大型 XML 文件导入 MySql
- python - Python 使用基于 80 个区间条件的 pd.cut() 和 np.select( ) 条件列表
- c++ - 损坏的堆栈跟踪 gdb
- r - 将宽格式转换为长格式,然后嵌套列
- flutter - Flutter:FirebaseException:发生内部错误。[ CONFIGURATION_NOT_FOUND ]
- java - 如何在 Java 中访问 MQTT 消息的功能?
- javascript - 在 wordpress 页面上运行我的 javascript 代码
- azure - Microsoft Azure 中的 bcp
- ubuntu - 为什么 Xenomai Kernel 不支持 EFI 切换?
- c++ - GDB回溯然后跳转到?