请求

Node.js GET和POST请求免费看

获取GET请求内容、获取POST请求内容

2020-04-22侠课岛    基础入门       

后端/Node.js/Node.js简明入门 16     0     591

服务器与浏览器的交互主要方式有get请求和post请求。get是从服务器上获取数据,post是向服务器传送数据。

获取GET请求内容

GET 通常用于获取服务端数据,GET 请求直接被嵌入在路径中,URL 是完整的请求路径,包括后面的部分,因此可以手动解析后面的内容作为 GET 请求的参数。

示例:

我们可以使用 URL 模块中的 parse() 方法来解析 GET 请求参数,首先要通过 require 引入模块:

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)));
}).listen(8888);

启动文件,访问http://127.0.0.1:8888/index?name=xkd&url=9xkd.com,浏览器显示结果为: 注意在代码中监听的是8888端口,所以我们访问时也是访问8888端口。 我们通过 http.createServer() 函数创建了一个HTTP服务器,req参数为请求对象,res参数为响应对象。然后用到了 url.parse(req.url,true) 函数返回一个 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'});
    // 解析 url 参数
    var params = url.parse(req.url, true).query;
    res.write("网站名:" + params.name + '\n');
    res.write("网址:" + params.url);
    res.end();
}).listen(8888);

启动文件,访问http://127.0.0.1:8888/index?name=xkd&url=9xkd.com,浏览器显示结果如下所示:

网站名:xkd
网址:9xkd.com

获取POST请求内容

POST 用于向服务器传送数据,如提交表单。POST 请求的内容全部都在请求体中,http.ServerRequest 并没有一个属性内容为请求体,原因是等待请求体传输可能是一件耗时的工作。 比如上传文件,很多时候我们可能并不需要理会请求体的内容,恶意的POST请求会大大消耗服务器的资源,所以 Node.js 默认是不会解析请求体的,当有需要时,可以手动解析。

示例:

例如下面这个例子,实现了一个表单提交,并显示提交内容:

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

var dataHTML=
'<html><head><meta charset="utf-8"><title>表单提交</title></head>' +
'<body>' +
'<form method="post">' +
'姓名: <input name="name"><br>' + 
'密码: <input name="pass"><br>'+
'<input type="submit">' + 
'</form>' 
'</body></html>';

http.createServer(function(req, res){
    // 存放请求头信息
    var save = '';     
    req.on('data', function(chunk){    
        save += chunk;  // 一定要使用+=
    });
    // 在end事件触发后,通过querystring.parse将post解析为真正的POST请求格式,然后向客户端返回
    req.on('end', function(){    
        // 解析参数
        save = querystring.parse(save);  // 将一个字符串反序列化为一个对象
        // 设置响应头部信息及编码,text/html形式
        res.writeHead(200, {'Content-Type': 'text/html;charset=utf-8'}) 

        if(save.name && save.pass){
            res.write("姓名:" + save.name);
            res.write("<br>");
            res.write("密码:" + save.pass);
        }else{
            res.write(dataHTML);
        }
        res.end();
    });
}).listen(8888);

启动文件,然后在浏览器中访问http://127.0.0.1:8888/,会显示一个表单,我们在输入框中输入姓名和密码,点击提交按钮,可以看到浏览器显示如下所示内容:

我们在上面的代码中,先是引入了需要用到的模块,dataHTML 中放的是html内容。然后使用http.createServer() 函数创建了一个HTTP服务器,在里面实现表单提交和信息显示。req.on() 用于触发事件。

本教程图文或视频等内容版权归侠课岛所有,任何机构、媒体、网站或个人未经本网协议授权不得转载、转贴或以其他方式复制发布或发表。

评价

16

本课评分:
  •     非常好
难易程度:
  •     适中的

内容目录


本文索引


|
教程
粉丝
主页

签到有礼

已签到2天,连续签到7天即可领取7天全站VIP

  • 1
    +2 金币
  • 2
    +3 金币
  • 3
    +5 金币
  • 6
    +7 金币
  • 5
    +6 金币
  • 4
    暖心福利
    自选分类VIP ×1天
  • 7
    惊喜大礼

    自选分类VIP ×3天 +20金币
  • 持续签到 +8 金币

金币可以用来做什么?