query.js 插件开发

query.js的作用很简单,就是把 url 问号后的参数,转换为json对象,然后保存在req.query中即可。

我们知道,所有的插件都会通过app.use(middle)的形式加入,而插件的写法是function middle(req,res,next){ }。所以第一步就要在lib目录下建立一个query.js文件。下面是插件的源代码和说明。

var url = require("url"),
    qs = require("querystring");

function query(req,res,next){
    var querystring = url.parse(req.url).query; // 请求参数部分
    // 判断是否有参数
    if(querystring){
        var queryObj = qs.parse(querystring);  // 转换为json格式
        req.query = queryObj;  // 赋值
    }

    next();
}

module.exports = query;

这个中间件,使用了node.js核心模块 querystring,它有个方法parse可以把字符串形式的查询参数字符串,转换为json格式。

最后我们修改stuwebfk/index.js 加入以下代码

exports.App = require("./lib/App");
exports.static = require("./lib/static");
exports.query = require("./lib/query");

这样外界就可以通过require得到query模块了。

下面我们做一个例子,用来测试query插件的作用。

var App = require("../..").App,
    query = require("../..").query,
    app = new App;

    // 加入query中间件
    app.use(query);

    app.get("/about",function(req,res){
        res.write("my name is "+req.query.name);
        res.end();
    })

    app.listen(3000);

运行程序,并打开浏览器,输入 localhost:3000/about?name=okok , 这时候浏览器的内容应该是 

my name is okok

思考一下整个插件的开发过程,并自己动手实际的开发,然后进行下一步的开发。下一节,我们要通过req.params的形式得到:xxx形式的url参数。