http模块 获取http请求报文中的路径 与 查询字符串

虽然request.url已包含属性和查询字符串,但使用不便,若只需其中一个不好提取,于是用到了如下路径和字符串的单独查询方法:

方法一:

一、获取路径

例如:我在启动谷歌端口时输入http://127.0.0.1:9000 后接了 "/search?keyword=111" 我想要查询到url路径为search字符串为111。方法如下:

1.导入url模块

javascript 复制代码
const url=require('url');

2.创建服务对象

3.运用url.parse解析查询字符串为一个对象

javascript 复制代码
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('服务已启动...');
});

二、获取查询字符串

javascript 复制代码
// 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('服务已启动...');
});

方法二:

一、获取路径

javascript 复制代码
const http=require('http');
const server=http.createServer((request,response)=>{
    response.end('url new');
// 一、获取路径:
// (1)实例化一个URL对象 必须由域名或ip、路径与字符串组成
// let url=new URL('http://www.xxx.com/search?a=100&b=200'); 
//或者newURL('http://127.0.0.1:9000','search?a=100&b=200')
let url=new URL(request.url,'http://www.xxx.com/search?'); 
//或者new URL('http://127.0.0.1:9000','search?a=100&b=200')
// console.log(url);
// 输出路径
console.log(url.pathname); // /search /favicon.ico
});


server.listen(9000,()=>{ 
    console.log('服务已启动...');
});
//注意启动谷歌端口时输入http://127.0.0.1:9000/search?keyword=111; 才能查询到url路径为search字符串为111

二、获取查询字符串

javascript 复制代码
// 获取http请求报文中的请求路径与查询字符串2:***
const http=require('http');

const server=http.createServer((request,response)=>{
    response.end('url new');
// (1)实例化一个URL对象 必须由域名或ip、路径与字符串组成
let url=new URL(request.url,'http://www.xxx.com/search?'); 
// 二、查询字符串:
// 输出keyword查询字符串
// 如下search属性里是一个字符串形式的查询字符串,有点不方便。所以我们使用searchParams这个对象里面的keyword属性
console.log(url.searchParams.get('keyword')); //  /search 5   /favicon.ico null
});

server.listen(9000,()=>{ 
    console.log('服务已启动...');
});
//注意启动谷歌端口时输入http://127.0.0.1:9000/search?keyword=111; 才能查询到url路径为search字符串为111
相关推荐
oioihoii16 分钟前
性能提升11.4%!C++ Vector的reserve()方法让我大吃一惊
开发语言·c++
河北瑾航科技16 分钟前
广西水资源遥测终端 广西水利遥测终端 广西用水监测遥测终端 河北瑾航科技遥测终端机HBJH-B01说明书
网络·科技·水文遥测终端机·遥测终端机·广西水资源遥测终端机·广西水利遥测终端·广西用水终端
毕设源码-朱学姐17 分钟前
【开题答辩全过程】以 基于JAVA的恒星酒店客房管理系统为例,包含答辩的问题和答案
java·开发语言
思密吗喽20 分钟前
景区行李寄存管理系统
java·开发语言·spring boot·毕业设计·课程设计
Rust语言中文社区23 分钟前
【Rust日报】Dioxus 用起来有趣吗?
开发语言·后端·rust
小灰灰搞电子26 分钟前
Rust Slint实现颜色选择器源码分享
开发语言·后端·rust
无限进步_1 小时前
C语言数组元素删除算法详解:从基础实现到性能优化
c语言·开发语言·windows·git·算法·github·visual studio
羑悻的小杀马特1 小时前
轻量跨云·掌控无界:Portainer CE + cpolar 让远程容器运维像点外卖一样简单——免复杂配置,安全直达对应集群
运维·网络·安全·docker·cpolar
月殇_木言1 小时前
Python期末复习
开发语言·python
松涛和鸣1 小时前
16、C 语言高级指针与结构体
linux·c语言·开发语言·数据结构·git·算法