九:Node的Get和Post请求

Get

在以get为请求的服务,URL是完整的请求路径,包括了?后面的部分,因此你可以手动解析后面的内容作为GET请求的参数

node.js 中 url 模块中的 parse 函数提供了这个功能。

var http = require('http');
var url = require('url');
var util = require('util');
 
http.createServer(function(req, res){
    res.writeHead(200, {'Content-Type': 'text/plain'});
 
    // 解析 url 参数
    var params = url.parse(req.url, true).query;
    res.write("网站名:" + params.name);
    res.write("\n");
    res.write("网站 URL:" + params.url);
    res.end();
 
}).listen(3000);

POST

一般post的数据比较复杂,类型也比较的多元,请求的时间也会比较的长,所以,在node中我们忽略这些,而是采用事件监听的方式,一点一点的接收数据

var http = require('http');
var querystring = require('querystring');
 
var postHTML = 
  '<html><head><meta charset="utf-8"><title>菜鸟教程 Node.js 实例</title></head>' +
  '<body>' +
  '<form method="post">' +
  '网站名: <input name="name"><br>' +
  '网站 URL: <input name="url"><br>' +
  '<input type="submit">' +
  '</form>' +
  '</body></html>';
 
http.createServer(function (req, res) {
    //用于暂存请求体的信息
  var body = "";
  //  通过req的data事件监听函数,每当接受到请求体的数据,就累加到body变量中
  req.on('data', function (chunk) {
    body += chunk;
  });

  // 在end事件触发后,通过querystring.parse将post解析为真正的POST请求格式,然后向客户端返回
  req.on('end', function () {
    // 解析参数
    body = querystring.parse(body);
    // 设置响应头部信息及编码
    res.writeHead(200, {'Content-Type': 'text/html; charset=utf8'});
 
    if(body.name && body.url) { // 输出提交的数据
        res.write("网站名:" + body.name);
        res.write("<br>");
        res.write("网站 URL:" + body.url);
    } else {  // 输出表单
        res.write(postHTML);
    }
    res.end();
  });
}).listen(3000);

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 自从那次别离,怕再无重见,珍重。吹过你发梢的清风,也可吹散我的泪花。
    祥和强阅读 536评论 1 0
  • 一个人太强势,不管出发点是不是好的,定会受到伤害,这种伤害几乎无法挽回,所以很多人遍体鳞伤,因为不懂得示弱。示弱其...
    雪蓉阅读 3,647评论 0 0