1. 集成

配置@Bean

  1. import com.netflix.loadbalancer.*;
  2. import org.springframework.cloud.client.loadbalancer.LoadBalanced;
  3. import org.springframework.context.annotation.Bean;
  4. import org.springframework.context.annotation.Configuration;
  5. import org.springframework.web.client.RestTemplate;
  6. /**
  7. * @Author:壹心科技BCF项目组 wangfan
  8. * @Date:Created in 2020/10/5 13:18
  9. * @Project:epec
  10. * @Description:Bean配置
  11. * @Modified By:wangfan
  12. * @Version: V1.0
  13. */
  14. @Configuration
  15. public class MyBeanConfig {
  16. /**
  17. * 因为RestTemplate不需要维护状态或属性等信息, 所以可以做成单例让Spring管理.
  18. * @return
  19. */
  20. @Bean
  21. @LoadBalanced
  22. public RestTemplate getRestTemplate(){
  23. return new RestTemplate();
  24. }
  25. }

2. 使用

2.1发起GET

使用getForObject

  1. //1. 发起GET请求, 并把结果序列化为responseType类型并返回
  2. public <T> T getForObject(URI url, Class<T> responseType)
  3. //示例
  4. String result = template.getForObject("http://localhost:9000/search/user?name=wangfan&age=28", String.class);
  5. //2. 发起GET请求, 并把结果序列化为responseType类型并返回
  6. //uriVariable是url参数
  7. public <T> T getForObject(String url, Class<T> responseType, Object... uriVariables);
  8. //示例
  9. String result = template.getForObject("http://localhost:9000/search/user?name={1}&age={2}", String.class,"wangfan",28);
  10. //3. 发起GET请求, 并把结果序列化为responseType类型并返回
  11. //uriVariables是url参数
  12. public <T> T getForObject(String url, Class<T> responseType, Map<String, ?> uriVariables);
  13. //示例
  14. Map<String, Object> uriVariables = new HashMap<String, Object>();
  15. uriVariables.put("name","wangfan");
  16. uriVariables.put("age",28);
  17. String result = template.getForObject("http://localhost:9000/search/user", String.class, uriVariables);

使用getForObject

  1. //1. 发起GET请求, 并把结果序列包装为为ResponseEntity<T>类型并返回
  2. public <T> ResponseEntity<T> getForEntity(URI url, Class<T> responseType);
  3. //2. 发起GET请求, 并把结果序列包装为为ResponseEntity<T>类型并返回
  4. //uriVariable是url参数
  5. public <T> ResponseEntity<T> getForEntity(String url, Class<T> responseType, Object... uriVariables);
  6. //3. 发起GET请求, 并把结果序列包装为为ResponseEntity<T>类型并返回
  7. //uriVariables是url参数
  8. public <T> ResponseEntity<T> getForEntity(String url, Class<T> responseType, Map<String, ?> uriVariables);

getForObjectgetForEntity 的区别:
主要区别还是返回值不一样, getForObject 会直接返回结果. 而getForEntity会返回ResponseEntity<T>, ResponseEntity<T>会把结果包装, 不但含有结果信息还有其他重要网络指标信息,
比如说: 状态码. 响应头等等..

2.2发起POST

同GET方法

  1. //request请求体内容(可空)
  2. public <T> T postForObject(URI url, @Nullable Object request, Class<T> responseType)
  3. //request: 请求体内容(可空)
  4. //uriVariables: URL上带的参数
  5. public <T> T postForObject(String url, @Nullable Object request, Class<T> responseType, Object... uriVariables);
  6. //request请求体内容(可空)
  7. //uriVariables: URL上带的参数
  8. public <T> T postForObject(String url, @Nullable Object request, Class<T> responseType, Map<String, ?> uriVariables);
  9. //request请求体内容(可空)
  10. //uriVariables: URL上带的参数
  11. public <T> ResponseEntity<T> postForEntity(URI url, @Nullable Object request, Class<T> responseType);
  12. //request请求体内容(可空)
  13. //uriVariables: URL上带的参数
  14. public <T> ResponseEntity<T> postForEntity(String url, @Nullable Object request, Class<T> responseType, Object... uriVariables);
  15. //request请求体内容(可空)
  16. //uriVariables: URL上带的参数
  17. public <T> ResponseEntity<T> postForEntity(String url, @Nullable Object request, Class<T> responseType, Map<String, ?> uriVariables);