RestTemplate使用小结

本文目的在于记录使用spring集成的resttemplate时的心得。

1.使用模版模拟form表单发送普通数据或发送带有文件的数据

1
2
3
4
5
6
7
8
9
10
11
12
private static final String URL = "http://127.0.0.1:8080/test_api/v1";

public String insertCompPic(String userId) {
RestTemplate rt = new RestTemplate();
MultiValueMap<String, Object> map = new LinkedMultiValueMap<String, Object>();
map.add("user_id", userId);
map.add("title", "测试标题");
map.add("grade", "027023");
File f = new File("F:\\server\\testPic\\1.png");FileSystemResource resource = new FileSystemResource(f);
map.add("files", resource);
return rt.postForObject(URL + "/composionedit/subpic", map, JSONObject.class).getString("comp_id");
}

其中postForObject中url对应发送请求的地址,map为请求体(这样说很不规范),剩下的一个参数为该接口返回的对象类型。
注:可以参考 http://blog.csdn.net/mhmyqn/article/details/26395743 中文件上传的写法,很具体,感谢原作者。

2.模版的exchange方法
可以理解为一个通用的请求发送器,可以实现put,post,delete等请求,需要在exchange方法中传入必要的参数来确定他所要实现的功能。

3.模版的getForObject方法
应为没有表单参数,所以传参时有两种方法,一种是在url中后边加?来拼接get方法所要传递的参数,另一种使用resetful风格的url,例如:

1
2
3
4
Map<String, String> vars = new HashMap<String, String>();
vars.put("hotel", "42");
vars.put("booking", "21");
String result = restTemplate.getForObject("http://example.com/hotels/{hotel}/bookings/{booking}", String.class, vars);

会转换为一个对http://example.com/hotels/42/rooms/41的GET请求。

(摘自http://blog.csdn.net/z69183787/article/details/41681101,这篇博客里也提供了非常多关于springMVC的rest方面的知识,非常值得一看,同样感谢原作者)