虽然request.url已包含属性和查询字符串,但使用不便,若只需其中一个不好提取,于是用到了如下路径和字符串的单独查询方法:
一、获取路径
例如:我在启动谷歌端口时输入http://127.0.0.1:9000 后接了 "/search?keyword=111" 我想要查询到url路径为search字符串为111。方法如下:
1.导入url模块
const url=require('url');
2.创建服务对象
3.运用url.parse解析查询字符串为一个对象
const server=http.createServer((request,response)=>{
response.end('url'); //end设置响应体
// console.log(request.url);
//虽然request.url已包含属性和查询字符串 /search?keyword=5&num=1 /favicon.ico 但使用不便,若只需其中一个不好提取,于是用到了如下路径和字符串的单独查询方法:
// 2.使用url.parse()方法解析request.url里面的内容
//url.parse() 方法接受两个参数:
//参数一:要解析的URL字符串。
//参数二:布尔值true/false ,表示是否要解析查询字符串为一个对象。如果为 true,则URL的查询部分(通常是?后面的部分)将被解析为一个键值对象。
let res=url.parse(request.url,true);
// console.log(res); //输出可以看到 路径为pathname: '/search', pathname: '/favicon.ico', 后接true,使查询字符串变成了一个对象
let pathname=res.pathname;
console.log(pathname); // /search /favicon.ico 可以看到pathname里就是我们所要的路径
});
//启动服务
server.listen(9000,()=>{
console.log('服务已启动...');
});
二、获取查询字符串
// 1.导入url模块
const url=require('url');
// 创建服务对象:
const server=http.createServer((request,response)=>{
response.end('url'); //end设置响应体
let res=url.parse(request.url,true);
let keyword=res.query.keyword;
//我们输出上文的 console.log(res);可以看到 查询字符串是 query: [Object: null prototype] { keyword: '5', num: '1' }的形式的,所以是.query.keyword
console.log(keyword); //5 undefined 第一个url的keyword为5,第二个url里面没有包含keyword这个参数所以为undefined
});
server.listen(9000,()=>{
console.log('服务已启动...');
});