zoukankan      html  css  js  c++  java
  • 记RestTemplate远程请求接口数据的一些注意事项

    问题场景:封装获取数据的方法时,想着每个数据接口都可以使用这个方法,不想重复写,于是就restTemplate.getForEntity(dataUrl, Object.class);采用object进行映射,发现取到的数据和直接浏览器访问url取到的数据不一致,甚至缺失。

    使用restTemplate.getForEntity(dataUrl, ClassXXX.class);获取远程数据时,参数二为返回数据的类型,如果接口返回类型为复杂数据类型即:map中嵌入list,或者list嵌入map,此时只能手动映射数据类型,

    就是自己创建该url返回的数据类型并封装为实体类,而java自动映射的Map或者List或者Object都不可以,会导致数据缺失或者结构与前端所需不一致,前端模板引擎遍历时报错等问题。
    举个例子:是map中嵌入list,Map<String,Object>中Object一旦映射的是List,自动映射的返回数据只会返回List的最后一条数据,原因是map.put()的键相同,导致覆盖。进而导致数据缺失。
    使用java自动映射的对象类型:Map.class  List.class  Object.class等,必须保证接口返回的数据类型是单一的某一种,(无论数量多少,只要种量为一即可),而不能是多种数据类型嵌套的复杂数据。一旦为复杂数据只能手动创建对应实体类。

    总的来说就是远程接口返回的数据类型是使用了泛型,或者返回数据所使用的实体类中数据类型不唯一,那么restTemplate接收的时候也只能使用对应实体类,而不能让java自己去映射。
     
  • 相关阅读:
    HTML+JSP的登录界面数据库链接
    链式前向星模板
    【洛谷【模板】最小生成树】
    【洛谷P1090 合并果子】
    Dijkstra【迪杰斯特拉算法】
    Bellman-Ford&&SPFA
    【一本通1248:Dungeon Master&&洛谷UVA532 Dungeon Master】
    【一本通1329:【例8.2】细胞&&洛谷P1451 求细胞数量】
    Floyed-Warshall【弗洛伊德算法】
    广搜
  • 原文地址:https://www.cnblogs.com/yzyBalance/p/13546552.html
Copyright © 2011-2022 走看看