get
getForEntity
有三种形式
- ResponseEntity getForEntity(URI url, Class responseType)
- ResponseEntity getForEntity(String url, Class responseType, Map<String,?> uriVariables)
- ResponseEntity getForEntity(String url, Class responseType, Object… uriVariables)
ResponseEntity<String> forEntity = restTemplate.getForEntity("http://localhost:8081/hello", String.class);
System.out.println(forEntity.getBody());
Map<String, String> map = new HashMap();
map.put("name", "张三");
ResponseEntity<String> forEntity2 = restTemplate.getForEntity("http://localhost:8081/getRest?name={name}", String.class,map);
System.out.println(forEntity2.getBody());
ResponseEntity<String> forEntity3 = restTemplate.getForEntity("http://localhost:8081/getRest?name={1}",String.class, "张三");
System.out.println(forEntity3.getBody());
getForEntity可以拿到的不只是body
如果你只需要关注body,那么就可以使用下面的。
getForObject
getForObject可以直接拿到body,他和getForEntity有对应的三组
String s = restTemplate.getForObject("http://localhost:8081/hello", String.class);
System.out.println(s);
Map<String, String> map = new HashMap();
map.put("name", "张三");
String s1 = restTemplate.getForObject("http://localhost:8081/getRest?name={name}", String.class,map);
System.out.println(s1);
String s2 = restTemplate.getForObject("http://localhost:8081/getRest?name={1}", String.class, "张三");
System.out.println(s2);
post
getForEntity
有三组形式
- ResponseEntity postForEntity(URI url, Object request, Class responseType)
- ResponseEntity postForEntity(String url, Object request, Class responseType, Map<String,?> uriVariables)
- ResponseEntity postForEntity(String url, Object request, Class responseType, Object… uriVariables)
注意第二个参数,request可以是HttpEntity对象,其中可以封装请求头和请求体的内容。测试:
api
@PostMapping("/postRest")
public Map postRest(@RequestParam("name")String name, @RequestBody Map<String,String> map, @RequestHeader Map<String,String> map2) {
System.out.println(map);
System.out.println(map2);
return map;
}
发送请求
Map<String,String> body = new HashMap<>();
body.put("body", "myBody");
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.add("header", "my header");
HttpEntity<Map<String, String>> httpEntity = new HttpEntity<>(body, httpHeaders);
ResponseEntity<String> responseEntity = restTemplate.postForEntity("http://localhost:8081/postRest?name={1}", httpEntity, String.class, "张三");
System.out.println(responseEntity.getBody());
看下效果
getForEntity
参考get请求相关内容
put
put没有返回值
- void put(URI url, Object request)
- void put(String url, Object request, Map<String,?> uriVariables)
- void put(String url, Object request, Object… uriVariables)
delete
delete没有返回值,也没有请求体
- void delete(URI url)
- void delete(String url, Map<String,?> uriVariables)
- void delete(String url, Object… uriVariables)
exchange
这个方法比较强大,用它可以涵盖上面所有方法,并让put和delete拿到返回值。
- ResponseEntity exchange(URI url, HttpMethod method, HttpEntity<?> requestEntity, Class responseType)
- ResponseEntity exchange(String url, HttpMethod method, HttpEntity<?> requestEntity, Class responseType, Object… uriVariables)
- ResponseEntity exchange(String url, HttpMethod method, HttpEntity<?> requestEntity, Class responseType, Map
测试:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.*;
import org.springframework.web.client.RestTemplate;
public class TestRest {
private String restUrl;
@Autowired
private RestTemplate restTemplate;
public TestRest() {
}
public String getRestUrl() {
return this.restUrl;
}
public void setRestUrl(String restUrl) {
this.restUrl = restUrl;
}
public String get(String path, Object... params) {
HttpHeaders headers = new HttpHeaders();
headers.add("Accept", "application/json; charset=UTF-8");
HttpEntity entity = new HttpEntity<>(null, headers);
String url = this.getRestUrl() + path;
System.out.println("to data service url:" + url);
ResponseEntity<String> responseEntity = this.restTemplate.exchange(url, HttpMethod.GET, entity, String.class, params);
return responseEntity.getBody();
}
public String post(String path, String reqJson, Object... params) {
String url = this.getRestUrl() + path;
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
headers.add("Accept", "application/json; charset=UTF-8");
HttpEntity entity = new HttpEntity<>(reqJson, headers);
ResponseEntity<String> resp = this.restTemplate.exchange(url, HttpMethod.POST, entity, String.class, params);
return resp.getBody();
}
public String put(String path, String reqJson, Object... params) {
String url = this.getRestUrl() + path;
System.out.println("reqest json:" + reqJson);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
headers.add("Accept", "application/json; charset=UTF-8");
HttpEntity entity = new HttpEntity<>(reqJson, headers);
ResponseEntity<String> resp = this.restTemplate.exchange(url, HttpMethod.PUT, entity, String.class, params);
return resp.getBody();
}
public String delete(String path, Object... params) {
String url = this.getRestUrl() + path;
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
headers.add("Accept", "application/json; charset=UTF-8");
HttpEntity entity = new HttpEntity<>(null, headers);
ResponseEntity<String> resp = this.restTemplate.exchange(url, HttpMethod.DELETE, entity, String.class, params);
return resp.getBody();
}
}