RestTemplate

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();
    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值