吐槽开发遇到的问题

这次主要写一点开发中遇到的问题吧,因为上周连着几天加班,实在太累!现在项目已经交给测试团队测试,可以好好休个假了,但是还是简单的写一点项目遇到的问题吧,其实主要是吐槽~~~~~项目加班我遇到的主要问题就是调用第三方接口的问题,第一天加班到凌晨2点,以为问题解决,结果第二天依然出错,当时因为这个问题导致项目不能测试所以我压力特别大,第二天又是加班到晚上12点才算解决问题。简单的说下项目吧,项目是微信公众号的web开发,所以必须调用安利那边的接口获取微信用户基本信息,简单的说就是我需要先调用安利的接口获取一个token,然后将token和一个redirectURL添加到安利提供的URL地址,然后重定向到这个URL,安利那边校验token和redirectURL的有效性,调用成功后会跳转到redirectURL,并将微信用户的信息post到request里面,然后我在redirectURL也就是我们controller里面从request获取微信用户的信息,然后根据用户信息进行不同的页面跳转就OK了。按理来说很简单的一个问题,而且根据我查看服务器的日志,确实可以拿到微信用户的信息,当时自己还是很开心的,因为这个项目我唯一担心的地方就在这里,其他的无非是CRUD,就算有部分前端代码也都不复杂,但是啊,但是出问题了~~~~一开始我的redirectURL的controller是这样的:

后来才知道另一个同事也跳转到这个页面了,其实按到里页面跳转必须是由我这里完成的,直接映射到相应的模板引擎就好了,而且他的那个controller也有一部分逻辑,当时我也很不爽,明显是缺乏沟通啊!我当时就提议将他的那部分逻辑放到我这里或者将我的这部分逻辑放到他哪里,简单省事。结果PM唧唧歪歪,各种说不行,当时心里有点不爽。我说好吧,那我改代码把,我就简单的把我这部分代码简单改了下,不调转页面了,直接重定向到同事的controller去算了,也没啥!!本着能少改就少改的原则,然后改成这样:

心想完事!接下来噩梦上演了………….,测试发现一直在调用安利那边的接口,死循环!好了,然后找问题啊,然后开始检查我的拦截器,以为拦截器问题,因为拦截器会拦截用户所有的请求,但是为了不频繁调用安利的接口,所以拦截器里面做了判断,就是如果已经调用过安利接口,将不会再次调用,直接放行。但是问题是一直重复调用,意味着我在controller里面session域中设置的值没有生效,what fuck……..日志打印一下吧,发现拦截器sessionId和controller里面sessionId不一致!!!彻底蒙蔽,session不一致,意味着我session域添加的各种值全都没用,所以无限调用安利接口,造成死循环。好了,现在不光我蒙逼了,同事们也蒙逼了!然而事实就是这么残忍啊,你不相信没关系啊,事实你总要相信吧。我再次提议把两部分代码合并吧,简单省事(我不是甩锅,真的不是)。然后PM:“他那部分逻辑如何,如何…..”,好吧,找问题,我的controller里面每个分支都LOGGER.info(),开始说是不是拦截器有问题,好吧,修改,重测,结果还是一样。好了,想过来想过去session不行要不放redis,你们在逗我啊,你放redis也要看什么东西啊,key值唯一性可以保证,但是用户怎么拿到自己的key值才是问题啊!讨论以后不可行,好吧,再想其他方法。然后又尝试使用RedirectAattributes……代码再改成下面:

新问题又来了,RedirectAttributes的属性值只能在页面获取,其他controller拿不到,意味着没有session还是不行啊!!当时我是一个急啊,是不是调用安利接口方法不对啊,要不用转发试试吧,结果不行,要不用HttpClient调用(使用这个方法有一个难题就是调用后的结果不唯一,失败的话是json,成功呢??直接掉转到我的controller来了。遂放弃)。当时一气之下,把所有逻辑全部注释掉了,准备把同事的代码复制过来,跳页面好了。同事代码就一个try catch,一点不复杂。刚粘贴过来,PM说用转发试试吧。好吧,你说了算。代码又改成这样:

结果就不用说了,还是失败,当时心里的感受不说了,这时候我准备按照我的计划实施了,复制粘贴同事的代码过来,PM又来了,用request转发试试,心里一万只…..,好!您说了算,我又改代码了:

启动项目再试,TMD…..成功了!!!当时感觉自己像是一个智障,问题解决又是12点了……拦截器代码赶快恢复,然后PM说,我们要想办法解决一下session共享的问题,我说这个不复杂,用redis可以解决啊。你看你这部分代码逻辑有问题…..我说你说我写吧…….,然后赶紧回家睡觉。问题就这么解决了,心里那个高兴啊,今天终于不用到2点了!!!也不用一直启动测试服务器了,每启动一次要十多分钟,不想吐槽了,没办法安利用的微软云….数据库sql server,服务器windows,存储微软storage。不过我的方法一直没能去施行心里还是有点不爽,等端午上班有机会我要试试……不过实在不想再折腾了,太累。第二天又有新的东西要加…..好吧,本地测试,丢测试环境,测试的时候自己的其他代码也出现了一点小问题,解决后又测试一遍,差不多了,交给测试组吧,结果又到了12点…..为了端午能好好休息,12点就12点吧!!!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180617G0QDUA00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券