<center>nodejs中的querystring模块</center>

querystring模块的一些函数用于解析与格式化url查询字符串,与其他类一样,使用
require(“querystring”)引入。

为什么要用Query String工具

1.使用安全的字符表示不安全的字符,如中文,某些特殊的字符等。这样的话不管是浏览器环境,或者服务器环境,传输的数据都是安全的,可以正确地使用,不会出现数据的丢失或显示错误的情况

2.消除一些有歧义的字符,举个例子,你想通过一个参数data传输’&a=1&b=1&c=1’这几个字符,如果这样写

data=&a=1&b=1&c=1 // 服务器解析的时候实际是四个参数:data,a,b,c

但如果通过querystring处理,它就是下面这种情况

data=%26a%3D1%26b%3D1%26c%3D1  // 安全传输data

所以在处理查询参数的时候使用querystring是很有必要的,使用之前首先要引用它:

const querystring = require("querystring"); 
import querystring from "querystring";    //es6 也可以这样写,这两种方式都可以
  1. 下面先定义一个对象obj使用stringify将对象转成字符串,在使用parse将字符串转成对象。

    stringify传一个参数

		var querystring = require("querystring");
		var obj = {name:"张三",age:25,height:"180cm"};
		// 对象转字符串
		var res = querystring.stringify(obj);
		console.log(res);
		// 字符串转对象
		var newobj = querystring.parse(res);
		console.log(newobj);

2.unescape方法是将乱码转换成正常的汉字,这个还挺实用的,在url地址栏上的参数传汉字时,经常是一串被编译过的乱码,使用unescape就解析乱码

var res = querystring.stringify(obj);
console.log(res);
// 乱码转换
var res1 = querystring.unescape(res);
console.log(res1);

**3.stringify传两个参数,**将对象转换成字符串,第二个参数代表以什么链接字符串;parse传两个参数,将字符串变成数组,第二个参数代表以什么切割字符串。
如下例以*为例

// 以*连接
var data = querystring.stringify(obj,"*");
console.log(data);
// 以*分割,将字符串变成对象
var result = querystring.parse(data,"*");
console.log(result);

4.stringify传三个参数时
第一个参数:对象;
第二个参数:将连接符换成第二个参数的值
第三个参数:将对象的键名与键值用第三个参数的值链接
下例:就是把连接符替换成*,键名与键值用?链接

// 连接符*,等号换成?
var data1 = querystring.stringify(obj,"*","?");
console.log(data1);

5.escape将汉字转换成乱码的编码格式

var str = "你好";
var newstr = querystring.escape(str);
console.log(newstr);

实例

<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>
<body>
  <form action="http://localhost:3000/demo/123/4567" method="get">
    username <input type="text" name="user" value=""><br>
    password <input type="password" name="password" value=""><br>
    <input type="submit" value="send">
  </form>
</body>
</html>

form表单发送数据给

http://localhost:3000/demo/123/4567

然后后台加以响应

const http = require("http");
//querystring模块可以帮助我们解析字符串
//但是只能解析类似“user=abc&password=123”这样的
//如果前面有问号,是不能顺利解析的
const querystring = require("querystring");

var server = http.createServer(function(req , res){
  //声明一个GET变量,存放解析好的数据
  var GET = {};
  //如果url中有“?”说明有请求地址和提交数据
  if(req.url.indexOf("?") != -1){
    //等号前和等号后需分成两个数组
    //这样querystring才可以正常工作
    var arr = req.url.split("?");
    var url = arr[0];
    //用querystring解析,返回一个键值对,赋值给GET
    GET = querystring.parse(arr[1]);
  }else{//如果没有“?”,则说明之请求了一个地址
    var url = req.url;
  }
  //输出url地址和GET数据
  console.log(url , GET);
  res.write(url);
  res.end();
});

server.listen(3000 , function(err){
  if(!err){
    console.log("Server is listening 3000 port...");
  }else{
    console.log(err);
  }
});

最后输出的结果为

/demo/123/4567 { user: 'sfddfs', password: 'dasdsad' }
/favicon.ico {}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值