RestTemplate实现后端跨域请求访问接口,LinkeHashMap数据转换为List

RestTemplate实现接口访问获取数据

  1.  设置url地址
  2. 设置http响应头内容
  3. 设置访问请求参数
  4. 利用RequestEntity封装请求
  5. 通过restTemplate发送请求url,主体,返回值类型
  6. Stream流数据处理提取/LinkedHashMap自动转换位对应的实体类

    @GetMapping("/flowTotal")
    public void flowTotal() throws URISyntaxException {
        //  1.设置接口Url地址
        String url = "http://cloud.gmyyun.com/api/assets/passenger-flow/foreign/get-flow-total";
        //  2.设置http响应头内容,返回值,接受值不需要设置
        HttpHeaders headers = new HttpHeaders();
        headers.add("token","eyJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE2NjE3MzU4NjgsIm5iZiI6MTY2MTczNTg2OCwiZXhwIjoxNjYxNzQzMDY4LCJQQVlMT0FEX0NMQUlNIjp7InVzZXJJZCI6IkFQSV9VU0VSMDAwMDc2IiwidGVuYW50SWQiOiJURU5BTlQwMDAwMTIiLCJ0b2tlbiI6bnVsbH19.uWAkBz9Yi9m1y59f2wb7dsSagu7pIex6fe_awD0eaUo");
        //  3.设置访问的请求参数
        ToiletParam toiletParam = new ToiletParam();
        toiletParam.setToiletId("TOILET-12-018");
        //  4.利用RequestEntity封装请求,分别有url地址,响应头,响应体;
        RequestEntity<ToiletParam> request = RequestEntity.post(new URI(url)).headers(headers).body(toiletParam);
        //  5.通过restTemplate发送请求,url,请求实例,返回值类型
        ResultVo resultVo = restTemplate.postForObject(url, request, ResultVo.class);
        //  6.Stream流处理数据
        if (null != resultVo.getData() && !resultVo.getData().isEmpty()){
            List<LinkedHashMap<String, Object>> data = resultVo.getData();
            //  7.LinkedHashMap自动转换为对应的实体类集合
            ObjectMapper mapper = new ObjectMapper();
            // new TypeReference和底层反射原理有关
            List<FlowTotalEntity> flowTotalEntities = mapper.convertValue(data, new TypeReference<List<FlowTotalEntity>>() {
            });
            System.out.println(flowTotalEntities);
        }
    }
  1. 第一点:注意RequestEneity链式调用中的headers可以直接通过lambda表达式赋值,不需要在外面在new一个,
  2. 第二点:就是将linkedHashMap也就是传过来的json数据转换的时候可以通过ObjectMapper实现自动转换,当然也可以直接foreach自己转换为list对象类型
  3. 请求实例一共封装三部分,URL是一个实体类对象不是String类型,响应头,响应主体可以是Map集合也可以是实体类

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值