• Spring的RestTemplate学习


    Spring提供了一个RestTemplate模板工具类,对基于Http的客户端进行了封装,并且实现了对象与json的序列化和反序列化,非常方便。RestTemplate并没有限定Http的客户端类型,而是进行了抽象,目前常用的3种都有支持:

    • HttpClient

    • OkHttp

    • JDK原生的URLConnection(默认的)

    首先在项目中注册一个RestTemplate对象,可以在启动类位置注册:

    1. @SpringBootApplication
    2. public class HttpDemoApplication {
    3. public static void main(String[] args) {
    4. SpringApplication.run(HttpDemoApplication.class, args);
    5. }
    6. @Bean
    7. public RestTemplate restTemplate() {
    8. // 默认的RestTemplate,底层是走JDK的URLConnection方式。
    9. return new RestTemplate();
    10. }
    11. }

    在测试类中直接@Autowired注入:

    返回对象时的用法:

    1. @RunWith(SpringRunner.class)
    2. @SpringBootTest(classes = HttpDemoApplication.class)
    3. public class HttpDemoApplicationTests {
    4. @Autowired
    5. private RestTemplate restTemplate;
    6. @Test
    7. public void httpGet() {
    8. User user = this.restTemplate.getForObject("http://localhost:8080/hello", User.class); //返回对象时的用法
    9. System.out.println(user);
    10. }
    11. }

    返回集合时的用法:

    1. package com.leyou.httpdemo;
    2. import com.leyou.httpdemo.pojo.Users;
    3. import org.junit.Test;
    4. import org.junit.runner.RunWith;
    5. import org.springframework.beans.factory.annotation.Autowired;
    6. import org.springframework.boot.test.context.SpringBootTest;
    7. import org.springframework.test.context.junit4.SpringRunner;
    8. import org.springframework.web.client.RestTemplate;
    9. import java.util.Arrays;
    10. import java.util.List;
    11. @RunWith(SpringRunner.class)
    12. @SpringBootTest(classes = HttpDemoApplication.class)
    13. public class HttpDemoApplicationTests {
    14. @Autowired
    15. private RestTemplate restTemplate;
    16. @Test
    17. public void httpGet() {
    18. Users[] users = restTemplate.getForObject("http://localhost:9090/user", Users[].class);
    19. List usersList = Arrays.asList(users);
    20. System.out.println("====================================================================");
    21. //foreach语句遍历
    22. for (Users user:usersList) {
    23. System.out.println(user);
    24. }
    25. System.out.println("====================================================================");
    26. }
    27. }

     

    • 通过RestTemplate的getForObject()方法,传递url地址及实体类的字节码,RestTemplate会自动发起请求,接收响应,并且帮我们对响应结果进行反序列化。

  • 相关阅读:
    1200*C. Challenging Cliffs(模拟&构造&贪心)
    Atcoder ABC159
    单元测试多线程调用sleep,执行中断
    说一说设备综合效率OEE
    接口测试神器Apifox究竟有多香?
    详解预处理(2)
    (附源码)spring boot考试系统 毕业设计 191015
    js原型链
    (只需三步)虚拟机上vm的ubuntu不能联上网怎么办
    BUUCTF msic 专题(128)[ACTF新生赛2020]剑龙
  • 原文地址:https://blog.csdn.net/ONEBEYONDFANS/article/details/133184456