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();
        }
  • 相关阅读:
    docker 创建本地镜像服务器
    14.3.5.2 Deadlock Detection and Rollback 死锁检测和回滚:
    14.3.5.1 An InnoDB Deadlock Example
    14.3.4 Phantom Rows 幻影行
    14.3.4 Phantom Rows 幻影行
    14.3.3 Locks Set by Different SQL Statements in InnoDB 不同的SQL语句在InnoDB里的锁设置
    Mysql rr和rc隔离
    RR模式下的事务隔离
    RR模式下的事务隔离
    Maven学习总结(6)——Maven与Eclipse整合
  • 原文地址:https://www.cnblogs.com/Brake/p/11854042.html
Copyright © 2011-2022 走看看