【Node.js】处理url

7275569-94d252446bff5904.png
微信订阅号:Rabbit_svip


会一步一步讲(中间会讲点小弯路),如果需要看最终效果请滑到最下方。



1、创建前端页面(用于访问)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <a href="http://localhost:8100/news?module=每日精选&id=10">Node.js之get请求</a>
</body>
</html>

这里有个 a 链接,访问 localhost:8100

并通过get的方式提交数据。

module=每日精选

id=10


2、后台处理请求

const http = require('http');

const server = http.createServer( (req, res)=>{
    console.log(req.url);
    res.end();
} )

server.listen(8100);
7275569-ae4e2f1f4e8382cb.gif
左侧是编辑器,可以查看后台到处理结果。右侧是浏览器。
7275569-607a3e1c23593a61.png
微信订阅号:Rabbit_svip

这里直接用 req.url 就能把url里到内容拿到。
这里一共有两段内容。其中 /favicon.ico 可以不用管。这个是网页请求时候获取的图标。

另一段才是有价值的
/news?module=%E6%AF%8F%E6%97%A5%E7%B2%BE%E9%80%89&id=10

可以看到,请求的页面是 /news

客户端发送的数据有 module=%E6%AF%8F%E6%97%A5%E7%B2%BE%E9%80%89id=10

module对应的数据被转码了。

但我们所希望拿到的是一个json格式的数据才对。

{
    module: "每日精选",
    id: "10"
}

以上才是我们所希望得到的数据。
要把格式转好,需要用系统提供到url模块。


3、引入url模块,解析url

const http = require('http');
const url = require("url");

const server = http.createServer( (req, res)=>{
    console.log(url.parse(req.url, true));
    res.end();
} )

server.listen(8100);

这里引入了 url 这个系统提供的模块。

然后用了 url.parse() 这个方法。
第一个参数传入 req.url,这是指向客户端访问的url。
第二个参数传入 true,不写true会默认转码。(不传第二个参数,可以滑到第4点看另一种解决方法)

当客户端访问的时候,后台就会接受到一份请求信息,并以json格式打包好。


7275569-cc81988105b67ef1.png
微信订阅号:Rabbit_svip

红框部分就是我们想要的数据。

所以可以把代码写成下面这样。

url.parse(req.url, true).query
7275569-ae2b8668f19599ac.png
微信订阅号:Rabbit_svip

这样就得到我们想要的数据了。




另一种方式解释url

4、通过querystring系统模块解析url

const http = require('http');
const url = require("url");
const querystring = require("querystring");

const server = http.createServer( (req, res)=>{

    const reqUrl = req.url;

    const queryUrl = url.parse(reqUrl).query;

    console.log( querystring.parse(queryUrl) );
    res.end();
} )

server.listen(8100);

以上两种方式用哪种都行。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值