node获取get参数和post参数

node获取get参数和post参数

1.get参数

引入包url,使用url.parse()对url地址进行解析,返回一个对象,就是get参数.

let {pathname,query} = url.parse(req.url,true);

  • pathname 地址
  • query 参数

表单部分

<form action="/aaa" method="get">
    账号<input type="text" name='username'> <br>
    密码<input type="password" name='password'> 
    
form>

js部分

const http = require('http');
const url = require('url');
const fs = require('fs');

let server = http.createServer((req,res)=>{
	// console.log(url);
	let {pathname,query} = url.parse(req.url,true);

	if(pathname === '/'){
		fs.readFile('./www/2.html',(err,data)=>{
			if(err){
				res.writeHeader(404);
				res.end(`
					
					
					
					404
					
					
					

您要找的页面找不到了

`
); }else{ res.end(data); } }) }else if(pathname ==='/aaa'){ res.end(` 数据

你提交的账号为:${query.username}

你提交的密码为:${query.password}

`
) } }); server.listen(3000,()=>{ console.log('服务器启动成功'); });

使用cmd进入目录后打开看看node .\4-url包获取get参数.js
node获取get参数和post参数_第1张图片
node获取get参数和post参数_第2张图片

2.post参数

引入包const querystring = require('querystring');对数据进行解析,返回一个参数对象

post与get略有区别,我们都知道,post请求是在请求体body中传递的,可以传递的数据比get要大很多。在网络中post有可能是分段传递数据的。我们需要把每一次传递过来的数据保存起来,最后再解析。

req.on('data',buffer=>{
	arr.push(buffer);	//创建一个数组,把每次传递过来的数据保存
});

req.on('end',()=>{
    let buf = Buffer.concat(arr);	//使用concat把数据连接起来
    let post = querystring.parse(buf.toString());//解析数据
}

表单部分


<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>posttitle>
head>
<body>
	<form action="/aaa" method="post">
		账号<input type="text" name='username'> <br>
		密码<input type="password" name='password'> 
		
	form>
body>
html>

js部分

const http = require('http');
const url = require('url');
const fs = require('fs');
const querystring = require('querystring');

let server = http.createServer((req,res)=>{
	let {pathname,query} = url.parse(req.url,true);
	if(pathname === '/'){
		fs.readFile('./www/2.html',(err,data)=>{
			if(err){
				res.writeHeader(404);
				res.end(`
					
					
					
					404
					
					
					

您要找的页面找不到了

`
); }else{ res.end(data); } }) }else if(pathname ==='/aaa' && req.method === 'POST'){ let arr = []; req.on('data',buffer=>{ arr.push(buffer); }); req.on('end',()=>{ let buf = Buffer.concat(arr); let post = querystring.parse(buf.toString()); res.end(` post方法

你提交的账号为:${post.username}

你提交的密码为:${post.password}

`
); }); } }); server.listen(3000,()=>{ console.log('服务器启动成功'); })

node获取get参数和post参数_第3张图片
node获取get参数和post参数_第4张图片

写在最后

最近懒了好多,学习的时间都减少了。node这部分是前端的基础,必须要掌握的。

对于get/post请求,可能以后用了express之后获取就很简单了,但是我觉得学习是学习一个学习的过程,原生的方法不重视,那就没有意义。
ps代码中有好多最近刚学的es6语法,let啊 箭头函数啊,不懂的可以百度查一查。

你可能感兴趣的:(个人总结)