zoukankan      html  css  js  c++  java
  • Node.js GET/POST请求

    Node.js GET/POST请求

    参考https://www.runoob.com/nodejs/node-js-get-post.html

    • 表单提交到服务器一般使用到GET/POST请求。

    获取GET请求的具体内容

    由于GET请求直接被嵌入在路径中,URL是完整的请求路径(包括了?后面的部分),因此可以手动解析。
    例如使用url模块中的parse()函数:

    var http = require('http');
    var url = require('url');
    var util = require('util');
    
    http.createServer((req, res)=>{
    	res.writeHead(200, {'Content-Type':'text/plain;charset=utf-8'});
    	res.end(util.inspect(url.parse(req.url, true)));
    }).listen(3000);
    

    在浏览器地址栏中输入:

      localhost:3000?username=admin&password=123456
    

    结果:

    url.parse(urlStr,[parseQueryString], [slashesDenoteHost]):将一个URL字符串转换为对象并返回,第二个参数默认为false,
    如果为true则返回的对象中的query属性为一个对象,否则为字符串。

    获取URL的参数

    还是使用url.parse()来解析URL中的参数:

    var http = require('http');
    var url = require('url');
    var util = require('util');
    
    http.createServer((req, res)=>{
    	res.writeHead(200, {'Content-Type':'text/plain;charset=utf-8'});
    	
    	// 解析URL参数
    	var params = url.parse(req.url, true).query;
    	res.write("用户名:"+params.username);
    	res.write("
    ");
    	res.write("密码:"+params.password);
    	res.end();
    }).listen(3000);
    

    在浏览器地址栏输入:

      localhost:3000?username=admin&password=123456
    

    结果:

    获取POST请求的具体内容

    与GET请求不同,POST请求的内容全部在请求体中,从而相对安全些。
    Node.js默认不会解析请求体,需要手动解析,使用querystring模块中的parse方法:

    var http = require('http');
    var querystring = require('querystring');
    
    var postHTML = `<form method='post'>
    										用户名:<input name="username" /><br>
    										密码:<input name="password" /><br>
    										<input type="submit" />
    									</form>`;
    
    
    http.createServer((req, res)=>{
    	// 定义一个body变量暂时存放请求体的信息
    	var body = "";
    	// 通过response的data事件监听函数,每当接收到请求体的数据,就累加到body变量中
    	req.on('data', (chunk)=>{
    		body += chunk;
    	});
    	
    	// 在end事件触发后,通过querystring.parse()将body变量解析为真正的POST请求格式,向客户端返回
    	req.on('end', ()=>{
    		// 解析参数
    		body = querystring.parse(body);
    		res.writeHead(200, {'Content-Type':'text/html;charset=utf-8'});
    		if(body.username && body.password){
    			res.write("用户名:"+body.username);
    			res.write('<br>');
    			res.write('密码:'+body.password);
    		}else{// 输出表单
    			res.write(postHTML);
    		}
    		res.end();
    	});
    }).listen(3000);
    

    在浏览器地址栏输入:

      localhost:3000
    

    输入admin和123456后点击提交,结果:

  • 相关阅读:
    百度脑图
    Bootstrap入门
    Tomcat热部署的三种方式
    There is a chart instance already initialized on the dom!警告
    Ubuntu14.04设置开机自启动脚本
    PRM路径规划算法
    A*算法
    V-rep学习笔记:串口操作
    V-rep学习笔记:机器人路径规划2
    V-rep学习笔记:机器人逆运动学解算
  • 原文地址:https://www.cnblogs.com/pangqianjin/p/14201538.html
Copyright © 2011-2022 走看看