前言:
其实POST请求方法和GET请求方法上大同小异,RestTemplate的POST请求也包含两个主要方法:
- postForObject()
- postForEntity()
二者的主要区别在于,postForObject()返回值是HTTP协议的响应体。postForEntity()返回的是ResponseEntity,ResponseEntity是对HTTP响应的封装,除了包含响应体,还包含HTTP状态码、contentType、contentLength、Header等信息。
一、postForObject发送JSON格式请求
写一个单元测试用例,测试用例的内容是向指定的URL提交一个Post。
@SpringBootTest
class PostTests {
@Resource
private RestTemplate restTemplate;
@Test
void testSimple() {
// 请求地址
String url = "http://jsonplaceholder.typicode.com/posts";
// 要发送的数据对象
PostDTO postDTO = new PostDTO();
postDTO.setUserId(110);
postDTO.setTitle("zimug 发布文章");
postDTO.setBody("zimug 发布文章 测试内容");
// 发送post请求,并输出结果
PostDTO result = restTemplate.postForObject(url, postDTO, PostDTO.class);
System.out.println(result);
}
}
- jsonplaceholder.typicode.com是一个可以提供在线免费RESTful测试服务的一个网站。
- ”/posts"服务接收PostDTO参数对象,并将请求结果以JSON字符串的形式进行响应。响应结果就是请求参数对象对应的JSON字符串。
- 所以postForObject方法第二个参数是请求数据对象,第三个参数是返回值类型。
最终将返回值的打印结果如下: