Mindon.IDEA

Air off, Mind on ~ / Javascript+Golang, Sci, Health… /

Lost in the Tech Way

昨天察觉到的一件事情,在技术开发里可能也是比较容易出现的问题——技术迷失,特此分享和作为自我的警醒。

目标,使用 NodeJS 的 soap 模块,这个模块需要 node-expat 支持。在 windows 下这个模块是比较令人头疼的,虽然周末把这个问题解决了。但是我需要用的两个 WSDL API:登录验证和发邮件,却只调通了登录验证。另外一个用来发邮件提交的xml内容总是不如意,导致调用失败。node-soap模块这个github上的开源模块确实还存在太多问题,还不能处理稍微复杂一点的 WSDL。

因为时间原因,对soap也不太熟悉,想着——如果用这个模块不行,干脆改用 php 或 python,这个有现成的例子——于是,便尝试了一下php和python的调用。自然,API的调用很顺利,而且在 nodejs 调用 php 和 python 也不是什么麻烦的事情。可能大家觉得这样问题就解决了。

当然这个方案貌似没什么问题,能绕过node-soap模块的糟糕表现。可总不是自己想的那样直接用NodeJS处理。不过事情的转折出现在我找 python 例子的过程中:第一个例子是Google到的 suds 模块,用来处理 soap 的,表现不错,达到了效果。不过我却在内部知识分享平台找到了一个python封装好的现成py脚本,却没有用到任何额外模块!这让我感觉到了异常。

于是,大略看了一下另外部门同事分享的python脚本。突然觉醒——自己这些天都迷失在了技术中,而忘记了自己的目标是:成功调用并使用这两个 Web Service API。

这个python脚本是通过把需要提交的xml内容做成字符串模板形式,然后直接用 POST 提交,在HTTP头里指定 SOAPAction。这是针对具体 WSDL 调用的最直接的办法。我折腾了3天却没有想到,完全是脑子不会转弯,迷失在解决技术问题里了,而不是解决真正的问题。

醒了,自然不再需要node-soap,自然就不用管node-expat(虽然已经不是问题),于是按照这个python脚本的思路,花了1+个小时:写代码、封装调试、自测,把原来的登录验证改为新的调用方式。

问题解决了,可这个事情让不断在提“要牢记最终目标是什么”的我无法平静,这个警醒必须是深刻的 —— 切不能迷失在过程之中。

Comments