zoukankan      html  css  js  c++  java
  • Spring(003)-消费返回list的rest服务

    通过spring提供的RestTemplate就可以访问rest服务。首先需要创建一个RestTemplate,这个需要手动来创建bean

    @Configuration
    public class DemoRestConfiguration {
    
        @Bean
        public RestTemplate restTemplate(SimpleClientHttpRequestFactory simpleClientHttpRequestFactory) {
            return new RestTemplate(simpleClientHttpRequestFactory);
        }
    
        @Bean
        public SimpleClientHttpRequestFactory simpleClientHttpRequestFactory() {
            SimpleClientHttpRequestFactory simpleClientHttpRequestFactory= new SimpleClientHttpRequestFactory();
            simpleClientHttpRequestFactory.setConnectTimeout(1000);
            return simpleClientHttpRequestFactory;
        }
    }

    需要说明的是,这里使用SimpleClientHttpRequestFactory ,是为了可以设置一些参数等,也可以直接new。

    先设计一个返回list的rest服务。

        @GetMapping(value = "/get", produces = "application/json")
        public List<Order> getAllOrders() {
            List<Order> orders = new ArrayList<>();
            for (int i = 0; i < 10; i++) {
                Order order = new Order();
                order.setOrderId(i);
                order.setOrderName(String.format("order:%d", i));
                orders.add(order);
            }
            return orders;
        }

    通过postman访问

    通过代码进行访问-Array

    @Service
    public class OrderConsumer {
    
        private static String HOST = "http://localhost:8080/action/";
        @Autowired
        private RestTemplate restTemplate;
    
        public List<Order> getOrders() {
            Order[] orders = restTemplate.getForObject(String.format("%s/get", HOST), Order[].class);
            return Arrays.asList(orders);
        }
    }

    这里需要注意的是,传入了数组,最终也返回了数组。

    测试代码

    通过代码访问2-ParameterizedTypeReference

       public List<Order> getOrdersPtr() {
            ParameterizedTypeReference<List<Order>> ptr = new ParameterizedTypeReference<List<Order>>() {};
            ResponseEntity<List<Order>> list = restTemplate.exchange(String.format("%s/get", HOST), HttpMethod.GET, null, ptr);
           return list.getBody();
        }
  • 相关阅读:
    MySQL 幻读详解
    vue-layer 弹窗z-index问题
    vue-cli 路径不变 改变参数 显示不同组件
    mysql ---- limit使用方式
    mysql ---- 官网的测试数据库
    2020年度总结和2021年目标
    校招(春招实习 + 秋招)总结感想
    Centos8和7的区别(参照redhat)
    centos8 网卡命令(centos7也可用)
    排查linux系统是否被入侵
  • 原文地址:https://www.cnblogs.com/Brake/p/11854042.html
Copyright © 2011-2022 走看看