NodeJS学习笔记(七)

本文介绍如何使用Node.js处理客户端发起的GET和POST请求。针对GET请求,文章演示了如何从URL中解析查询参数;对于POST请求,则展示了如何手动收集并解析请求体中的数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

处理客户端发起的GET请求

get请求一般直接嵌入URL中,因此我们可以手动解析URL后面的内容

var http = require('http');
var url = require('url');
var util = require('util');

http.createServer(function(req,res){
    res.writeHead(200,{'Content-Type': 'text/plain;charset=utf-8'});
    res.end(util.inspect(url.parse(req.url,true)))  //req.url转对象,再对象转字符串
}).listen(3000);

获取URL参数

上面截图中我们可以看到req.url里面有query参数,我们先把req.url对象化,也就是url.parse(req.url,true),然后url.parse(req.url,true).query即可获得{name:'菜鸟教程',url:'www.runoob.com'},然后url.parse(req.url,true).query.name即可获得菜鸟教程四个字。

获取POST请求内容

由于恶意post会大大消耗服务器资源,所以nodejs不会默认解析请求体,需要我们手动来做

var http = require('http');
var querystring = require('querystring');

http.createServer(function(req,res){
    var post = '';
    req.on('data',function(chunk){
        post += chunk;
    }) //通过req的data事件监听函数,每当接收到请求体请求,就累加到post变量中
    req.on('end',function(){
        post = querything.parse(post);
        res.end(util.inspect(post));
    })
}).listen(3000);

一个post实例

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>';   //模拟一个客户端


//模拟后端    
var http = require('http');
var querystring = require('querystring');

http.createServer(function(req,res){
    var body = '';
    req.on('data',function(chunk){
    body += chunk;
});
    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);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值