对接灯塔数据接口

目标

在原来系统中对接灯塔的数据接口,定时拉数据,注意超时

流程

老板给了一个postman脚本, 从导入脚本、查请求头,看灯塔文档、灯塔网关接入文档、数据上报查数据、设计数据表、封装灯塔查询接口、接口测试

遇到的问题:

  • 老板给了一个postman脚本,自己花了时间去学习postman变量的设置、获取。耗时较多,不知道怎么拿变量。
  • 用拦截器给feign增加请求头,共用了请求头。发现有两个不同的feign,分别请求不同的服务,分别要用不同的请求头
  • 从上下文Environment中读取配置项,被原来的代码误导,并且即使没有类注解@Component,也要用@Autowired
  • 设计表结构。耗时较多,想参考piwik的,增加多余的表
  • 复杂的json转类结构。静态内部类改出了问题,有多余的类
  • 静态内部类不能接收泛型,转成非静态的后,又json反序列化报错
  • 封装feign接口总体耗时长
  • 数据上报灯塔查不到数据
  • 灯塔对接找灯塔小秘要了网关接入文档
  • Feign Client请求接口的响应是text/plain,而postman请求接口的响应是application/json,导致Feign Client请求的响应无法反序列化
    消耗时间: 一天半
    预计时间:半天

问题分析

  1. 对postman的pre-request不了解。想要从{{applicationId}}之类的变量中拿到接入网关的请求头,花费了比较长的时间去学postman。结果{{sign}}还是计算得到的,不能直接复制。拿到了基本的固定值。
  2. 接入网关,应该找灯塔的对接人要iwiki文档,而不是想着只从postman的请求头里拿到参考信息。
  3. 设计表结构过于复杂。领导已经给出表结构的设计了,自己为了方便扩展和管理,由花了大量时间去看piwik的表结构,并且参考设计。最终只多出了一个管理行为的表,用处也不大。
  4. 用GsonFormatPlus插件通过postman接口返回的json生成了复杂的、包含静态内部类的DTO,发现不能传泛型,把复杂的内部类拆成了几个普通的类,可以正常接受泛型数据,但是类的数量较多,存在大量不需要的属性,后面优化DTO,只要了响应状态和基本的响应对象。在用工具生成复杂的结构后,要参考对接文档,精确的优化类结构。
  5. 对FeignClient的配置生效范围不熟。配置类上加@Component或者@Configuration注解的配置,是默认全局生效,不管有多少个FeignClient。去掉类注解后,加到@FeignClient的Configuration属性上后,是针对单个FeignClient生效
  6. 不要花大量时间看灯塔的对外文档,应该找灯塔对接人要网关接口文档
  7. 花了几个小时去查上报的数据
  8. 对Feign Client请求拦截器的了解一般,只知道是增加请求头的

值得肯定的地方

  1. 的确从postman脚本中拿到了网关的基本信息,也后续找对接人拿到了网关接入的文档,成功对接
  2. 在json结构较复杂的情况下,使用了idea插件自动生成了基本的类结构,虽然生成的复杂
  3. 没查到上报的数据,及时找了对接人处理,没继续自己摸索

解决方案

  1. 了解postman的脚本、console用法
  2. 以后接入网关,要先找对接要iwiki文档
  3. 设计表结构要尽量简单
  4. idea的各种插件可以用,但是不一定简单,需要自己后续优化,不能原样使用
  5. FeignClient使用起来是很简单,但就是简单才容易出错,要看官方文档和实现原理
  6. 内部对接就不要看对外的文档,参考性一般

实施计划

  1. 记录Feign、Environment的基本使用记录
  2. 了解Feign拦截器、配置加载的原理
  3. 去掉想把表结构设计的灵活的习惯

预期效果

  1. 后续接入其他服务的网关时,直接要文档、要基本参数、看算法,希望时间在一个小时内
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容