简化获取接口后面的参数,querystring.parse()方法的使用

67 阅读1分钟

假如有这么一个url http://localhost:3000/api/list?number=100&sort=desc

本文需要做到

把url里面的参数取出来,放到一个新的对象里面

把接口放到postman中测试,能正常执行。

之前的方法是非结构化数据实现结构化。 把url转成数组,用问号把前后两部分分开,分别去除前后两部分,然后用 数组.forEach(()=>{})的方式继续把 number=100中的number和100取出来,再用queryObj[key]=value的形式写入数组,这样就获取到了url后面的参数,并再postman中执行。(具体见上一篇)

querystring模块的使用

引入自带的querystring const querystring = require("querystring")

首先先获取到url后面的参数const queryStr = url.split("?")[1];

用引入的qureystring模块 把split转出来的参数数组转成字符串 qurerystring.parse(queryStr)

querystring.parse()转对象 把这转出来的放到对象里面去

const queryObj = qurerystring.parse(queryStr)

对象打点获取里面的属性就可以了

完整代码如下

// index.js
const http = require("http");
// 引入自带的querystring,这是一个方法
const  qurerystring = require("querystring")
const server = http.createServer((req, res) => {
	const url = req.url;
	const method = req.method;
	// 获取请求的路径
	const path = url.split("?")[0];
	// 获取请求的querystring
	const queryStr = url.split("?")[1];
	// querystring转对象
    // 用引入的qureystring模块 把split转出来的参数数组转成字符串 qurerystring.parse(queryStr)
    //把这转出来的放到对象里面去
	const queryObj = qurerystring.parse(queryStr)


	if (path === "/api/list" && method === "GET") {
		res.end(`您正在请求留言板列表接口! 将返回${queryObj.number}条留言!`);
	} else {
		res.end("别瞎写! [○・`Д´・ ○]");
	}
});
server.listen(3000);
console.log("http请求已经被监听, 3000端口, 请访问: http://localhost:3000");

测试结果如下

image.png