症状描述

今天在做API改造,并添加新的接口,代码大致是这样的,使用的是Node.js的express框架,同一个项目里面有一小块用的ejs模板来写html,另外大部分使用的Restful的方式传输json数据。
某个route内容如下:

var data=require('./path')

module.exports = function (app) {
    app.post('/data', data.view_add);
    app.post('/data/json', data.view_addjson);
    app.get("/data/:dataid", data.view_findOne);
    /*中间还后很多接口*/
    ////////////////////////
    app.get("/data/test", data.test);
};

前面有很多post和get。我需要测试一个自己写的方法,也就是/data/test接口所对应的,这个如果请求正确,将会返回一串有意义的json数据。
但是我实际测试的时候,这个接口死活只给我返回一个自定义的错误码,但是将这个方法放到其他的route文件里却是正常工作的,这时候就百思不得其解了。

测试和和发现问题所在

遇到了问题就要设法去解决。先是想到了data.test的写法是不是有问题,但是同样的代码段放到其他地方是正确工作的,明代码没问题。
实在想不出是哪里可能出现问题了,就用了最笨的办法,单变量
把除了app.get("/data/test", data.test);之外的其他url注释掉。这时候这段代码正常工作了。然后一条一条的去掉注释(我这里api的数量少,都好办事儿)。
去掉注释到app.get("/data/:dataid", data.view_findOne);这一条url的时候就不正常工作了!
仔细看了一下,被自己坑死了!问题出在/data/:dataid/data/test上面。因为前者写在前面,当我请求/data/testurl的时候,被解析成了/data加上参数test,但是实际上我的意图是/data/test,正好/test对不正确输入的处理是返回一段错误码。
就这样找,耗了小半天时间。

教训

同一个项目里面,还是尽量保持风格一致,虽然在写代码的时候比较麻烦一点,但是后面维护,包括交接代码给别人,都会轻松很多。代码只管写,不管维护也是在耍流氓。
很多公司不缺有能力的人,也不缺技术实力,但是总是做不成气候,整个组织和管理是个问题吧。真的不想这样一个人做一个项目的工作了,时间久了都不会与人交流,写出来的代码都没法和队友的代码合并。


MingjunYang
290 声望5 粉丝

一切从〇开始……