1. 集成
配置@Bean
import com.netflix.loadbalancer.*;import org.springframework.cloud.client.loadbalancer.LoadBalanced;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.web.client.RestTemplate;/*** @Author:壹心科技BCF项目组 wangfan* @Date:Created in 2020/10/5 13:18* @Project:epec* @Description:Bean配置* @Modified By:wangfan* @Version: V1.0*/@Configurationpublic class MyBeanConfig {/*** 因为RestTemplate不需要维护状态或属性等信息, 所以可以做成单例让Spring管理.* @return*/@Bean@LoadBalancedpublic RestTemplate getRestTemplate(){return new RestTemplate();}}
2. 使用
2.1发起GET
使用getForObject
//1. 发起GET请求, 并把结果序列化为responseType类型并返回public <T> T getForObject(URI url, Class<T> responseType)//示例String result = template.getForObject("http://localhost:9000/search/user?name=wangfan&age=28", String.class);//2. 发起GET请求, 并把结果序列化为responseType类型并返回//uriVariable是url参数public <T> T getForObject(String url, Class<T> responseType, Object... uriVariables);//示例String result = template.getForObject("http://localhost:9000/search/user?name={1}&age={2}", String.class,"wangfan",28);//3. 发起GET请求, 并把结果序列化为responseType类型并返回//uriVariables是url参数public <T> T getForObject(String url, Class<T> responseType, Map<String, ?> uriVariables);//示例Map<String, Object> uriVariables = new HashMap<String, Object>();uriVariables.put("name","wangfan");uriVariables.put("age",28);String result = template.getForObject("http://localhost:9000/search/user", String.class, uriVariables);
使用getForObject
//1. 发起GET请求, 并把结果序列包装为为ResponseEntity<T>类型并返回public <T> ResponseEntity<T> getForEntity(URI url, Class<T> responseType);//2. 发起GET请求, 并把结果序列包装为为ResponseEntity<T>类型并返回//uriVariable是url参数public <T> ResponseEntity<T> getForEntity(String url, Class<T> responseType, Object... uriVariables);//3. 发起GET请求, 并把结果序列包装为为ResponseEntity<T>类型并返回//uriVariables是url参数public <T> ResponseEntity<T> getForEntity(String url, Class<T> responseType, Map<String, ?> uriVariables);
getForObject 和 getForEntity 的区别:
主要区别还是返回值不一样, getForObject 会直接返回结果. 而getForEntity会返回ResponseEntity<T>, ResponseEntity<T>会把结果包装, 不但含有结果信息还有其他重要网络指标信息,
比如说: 状态码. 响应头等等..
2.2发起POST
同GET方法
//request请求体内容(可空)public <T> T postForObject(URI url, @Nullable Object request, Class<T> responseType)//request: 请求体内容(可空)//uriVariables: URL上带的参数public <T> T postForObject(String url, @Nullable Object request, Class<T> responseType, Object... uriVariables);//request请求体内容(可空)//uriVariables: URL上带的参数public <T> T postForObject(String url, @Nullable Object request, Class<T> responseType, Map<String, ?> uriVariables);//request请求体内容(可空)//uriVariables: URL上带的参数public <T> ResponseEntity<T> postForEntity(URI url, @Nullable Object request, Class<T> responseType);//request请求体内容(可空)//uriVariables: URL上带的参数public <T> ResponseEntity<T> postForEntity(String url, @Nullable Object request, Class<T> responseType, Object... uriVariables);//request请求体内容(可空)//uriVariables: URL上带的参数public <T> ResponseEntity<T> postForEntity(String url, @Nullable Object request, Class<T> responseType, Map<String, ?> uriVariables);
