假如有这么一个url http://localhost:3000/api/list?number=100&sort=desc
本文需要做到
把url里面的参数取出来,放到一个新的对象里面
把接口放到postman中测试,能正常执行。
之前的方法是非结构化数据实现结构化。 把url转成数组,用问号把前后两部分分开,分别去除前后两部分,然后用
数组.forEach(()=>{})
的方式继续把 number=100中的number和100取出来,再用queryObj[key]=valu
e的形式写入数组,这样就获取到了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");
测试结果如下