RestTemplate - GET实战

一. 方法锦集

二. 方法实战

1. getForEntity 打开方式A

import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import javax.annotation.Resource;

/**
 * @author :zhangbocong
 * @version :V1.0
 * @program :spring_boot_demo
 * @date :Created in 2021年5月14日 11:08
 * @description :Get方式请求案例
 */
@RestController
@RequestMapping("getRest")
public class GetTestController {
    @Value("${server.port}")
    private String port;

    @Resource
    private RestTemplate restTemplate;

    /**
     * getForEntity 方法用法:1
     *
     * @param name 名字
     * @return java.lang.String
     */
    @GetMapping("getForEntityOne")
    public String getForEntityOne(String name) {
        // 请求地址:注意请求地址最后的参数:?name={这里面放点啥都行,别空着,比如:1、name,都可以}
        String url = "http://localhost:" + port + "/publicData/getPublic?name={1}";
        ResponseEntity<String> responseEntity = restTemplate.getForEntity(url, String.class, name);
        return responseEntity.getBody();
    }
}

2. getForEntity 打开方式B

    /**
     * getForEntity 方法用法:2
     *
     * @param name 名字
     * @return java.lang.String
     */
    @GetMapping("getForEntityTwo")
    public String getForEntityTwo(String name) {
        // 请求地址:注意请求地址最后的参数:?name={这里面放点啥都行,别空着,比如:1、name,都可以}
        String url = "http://localhost:" + port + "/publicData/getPublic?name={name}";
        // 设置请求参数
        Map<String, Object> map = new HashMap<>();
        map.put("name", name);
        // 发送请求
        ResponseEntity<String> responseEntity = restTemplate.getForEntity(url, String.class, map);
        return responseEntity.getBody();
    }

3. getForEntity 打开方式C

    /**
     * getForEntity 方法用法:3
     *
     * @param name 名字
     * @return java.lang.String
     */
    @GetMapping("getForEntityThree")
    public String getForEntityThree(String name) throws UnsupportedEncodingException {
        // 请求地址:注意请求地址最后的参数:?name={这里面放点啥都行,别空着,比如:1、name,都可以}
        String url = "http://localhost:" + port + "/publicData/getPublic?name="+ URLEncoder.encode(name,"UTF-8");
        // 设置请求URI
        URI uri = URI.create(url);
        // 发送请求
        ResponseEntity<String> responseEntity = restTemplate.getForEntity(uri, String.class);
        return responseEntity.getBody();
    }

4. getForObject 打开方式

  • getForObject 方法和 getForEntity 方法类似,getForObject 方法也有三个重载的方法,参数和 getForEntity 一样,这里主要说下 getForObject 和 getForEntity 的差异,这两个的差异主要体现在返回值的差异上, getForObject 的返回值就是服务提供者返回的数据,使用 getForObject 无法获取到响应头:.getHeaders()。
    /**
     * getForObject 方法用法:1
     *
     * @param name 名字
     * @return java.lang.String
     */
    @GetMapping("getForObjectOne")
    public String getForObjectOne(String name) {
        // 请求地址:注意请求地址最后的参数:?name={这里面放点啥都行,别空着,比如:1、name,都可以}
        String url = "http://localhost:" + port + "/publicData/getPublic?name={1}";
        return restTemplate.getForObject(url, String.class, name);
    }

Git地址:

// 分支:restTemplate_demo
https://gitee.com/zhangbocong/spring_boot_demo.git