症状描述
今天在做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/test
url的时候,被解析成了/data
加上参数test
,但是实际上我的意图是/data/test
,正好/test
对不正确输入的处理是返回一段错误码。
就这样找,耗了小半天时间。
教训
同一个项目里面,还是尽量保持风格一致,虽然在写代码的时候比较麻烦一点,但是后面维护,包括交接代码给别人,都会轻松很多。代码只管写,不管维护也是在耍流氓。
很多公司不缺有能力的人,也不缺技术实力,但是总是做不成气候,整个组织和管理是个问题吧。真的不想这样一个人做一个项目的工作了,时间久了都不会与人交流,写出来的代码都没法和队友的代码合并。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。