nodejs处理get请求

主要记录下获取get请求里面的参数的问题。

假设有这样一个链接

urlString='hello?name=LiLei&position=general'

要从这个链接里提取出参数name和position的值。这里要用到url模块和querystring模块,所以先准备这两个对象。

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

然后将urlString转化成url对象,并提取参数字符串"name=LiLei&position=general"

var UrlString = url.parse(urlString); //将字符串urlString转化成url对象UrlString
var QueryString = UrlString.query;//获取参数字符串,此时QueryString="name=LiLei&position=general"

然后利用querystring.parse()将参数字符串QueryString转化成含有键值对的对象params

var params = querystring.parse(QueryString);

然后用params["name"]、params["position"] (或者params.name、params.position)就能获取参数name、posiotion的值。上面两步也可以综合起来写成

var params = querystring.parse(url.parse(urlString).query);

下面给出个小例子(已省去非关键代码):

var handle = {};
var url = require("url");
var querystring = require("querystring");

handle["/hello"] = hello;

function hello(request, response) {
    /*
    url.parse将字符串转化成url对象,
    url.parse().query获取url里面的参数字符串,比如“name=LiLei&position=general”,
    再用querystring.parse(query),将“name=LiLei&position=general”转换成键值对组成的对象params,像{name:"LiLei",position:"general"}这样
    */
    var params = querystring.parse(url.parse(request.url).query);
    response.writeHead(200, {"Content-Type": "text/html;charset=utf-8"});//添加charset=utf-8以支持中文
    response.write("name:" + params.name + "<br/>");
    response.write("position:" + params.position + "<br/>");

    /*或者也可以像下面这样使用遍历*/
    /*for(var param in params){
        response.write(param + ":" + params[param] + "<br/>");
    }*/
    
    response.end();
}

exports.hello = hello;