笛风接口对接心得:
1)拿到接口文档后,首先对查询航班的请求报文与响应报文构建相对应的类与字段。发现需要进行签名,查看签名方式,简单的编写签名方式后很快就通过了,可以查询航班。由于初次接触机票行业以及第一次对接接口,没有留意响应报文与所属类是否匹配。
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。2)接着进行验价接口的编写与测试,发现请求成功,请求报文也正确,但是接收验价的类没有值,反复查看未果,最后请示可颖,可颖找出了响应报文与接口文档给出的类不太符合,有一个键是List类型,但是没有标注。修改后调用验价成功。
3)知道了接口文档与报文有可能不符后,我查看了查询航班的响应类,发现超过一半值都null,查看响应报文,有两个Key为动态的,无法直接序列化为查询航班响应类。我先把动态的Key与值存为String类型,然后解析去掉Key后存入一个新的查询航班响应类。
4)对接下单接口,一打开文档,足足两页屏的请求参数,而且大部分参数都是查询航班与验价返回的,需要一个个对应上去。刚开始有点懵,不熟悉哪些字段在哪个Key中,耗时较多,终于赋好测试值后。测试居然返回的是未知错误,询问接口人员,发现我的请求数据部分不是格式化的JSON。我修改后提交,还是提示未知错误。复制到接口的在线测试网站上执行,提示是成功的。
5)再次询问接口人员与反思后,可能是签名方法的错误,因为我一开始写的签名方法比较简单。但是因为查询和验价都成功了所以没有多想,仔细参阅接口文档的签名方法,文档上只有JAVA与PHP的代码,其中只是说明递归获取JSON的键值对,排序,再进行MD5。因为代码不同,无法直接使用。
6)我先是使用字典对JSON的键值对进行存储,然后排序进行MD5,很快查询和验价都成功了,但是下单一直提示签名错误。询问接口人员后,按照我的请求报文他给出了进行MD5前的签名字符串给我对比。发现他的排序是先进行大写,而且有几个是重复的。首先我想到的是不能用字典了,但是有一个Key我处理的方式不准确,需要用到字典来定位然后进行小改。只好先继续使用字典,键冲突的先存到一个链表中,最后把字典合并入链表,进行排序后拼接签名。
7)下单成功后返回查看签名方法,代码杂乱冗余。重写了一个签名方法,不再使用字典,直接使用链表存储。该签名方法只适用于该接口,因为获取JSON所有键值对时我没有使用迭代,而是写死了。
总结:
对于机票参数的不熟悉,一开始需要先仔细查阅与思考,在脑海中有一个大概的轮廓。该接口的文档描写不够精准,导致对接时出现较多未知异常。
通过这次接口对接,我对于接口的对接有了一定的经验,下次对接接口时会比较快捷。最大的提升感觉是对于JSON的处理,之前我对于JSON只是初步了解,并没有做深入的研究与使用,在对接该接口时需要用到较多的JSON处理,查阅网上的资料后得到了提升。
