免费开设网站,满足seo需求的网站,创意网站,青海网站建设RestTemplate介绍简单接口调用#xff08;getForObject#xff09;添加 Header 和 Cookie#xff08;exchange#xff09;介绍
在项目中#xff0c;当我们需要远程调用一个 HTTP 接口时#xff0c;我们经常会用到 RestTemplate 这个类。这个类是 Spring 框架提供的一个工…
RestTemplate介绍简单接口调用getForObject添加 Header 和 Cookieexchange介绍
在项目中当我们需要远程调用一个 HTTP 接口时我们经常会用到 RestTemplate 这个类。这个类是 Spring 框架提供的一个工具类异常好用其他框架中提供的 rest 调用或多或少借鉴了这个思路
该类提供三组接口
getForObject — 这类方法是常规的 Rest APIGET、POST、DELETE 等方法调用exchange接收一个 RequestEntity 参数可以自己设置 HTTP methodURLheaders 和 body返回 ResponseEntityexecute通过 callback 接口可以对请求和返回做更加全面的自定义控制
该工具关注请求数据的构建以及返回数据的处理
简单接口调用getForObject
我们只需要一行代码即可实现 get 与 post 的请求 // get 请求的构建String result restTemplate.getForObject(https://example.com/hotels/{hotel}/rooms/{hotel}, String.class, hotel1, hotel1);String url http://127.0.0.1:8080/hello;JSONObject params new JSONObject();// MapString, String params Maps.newHashMap();// restTemplate 会根据 params 的具体类型调用合适的 HttpMessageConvert 将请求参数写到请求体 body 中并在请求头中添加合适的 content-type// 也会根据 responseType 的类型本列子中是 JSONObject设置 head 中的 accept 字段当响应返回的时候再调用合适的 HttpMessageConvert 进行响应转换ResponseEntityJSONObject responseEntity restTemplate.postForEntity(url, params, JSONObject.class);获取返回的数据 // 可以通过 responseEntity 提供的各种方法来获取返回的各种信息Integer statusCodeValue responseEntity.getStatusCodeValue();HttpHeaders headers responseEntity.getHeaders();JSONObject body responseEntity.getBody();添加 Header 和 Cookieexchange
有时候我们需要在请求中的 Head 中添加值或者将某些值通过 cookie 传给服务端 // 建立目标地址UriComponents uriComponents UriComponentsBuilder.fromHttpUrl(127.0.0.1:8080).path(/test).build(true);URI uri uriComponents.toUri();// 建立请求RequestEntityJSONObject requestEntity RequestEntity.post(uri).// 添加 cookieheader(HttpHeaders.COOKIE, key1value1).// 添加 headerheader(MyRequestHeader, MyValue).accept(MediaType.APPLICATION_JSON).contentType(MediaType.APPLICATION_JSON).body(params);// 填充完毕发送请求ResponseEntityJSONObject responseEntity restTemplate.exchange(requestEntity, JSONObject.class);