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(); }
作者:iBrake
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.