nodejs-url

url处理 url模块的基本用法

node.js为互联网而生,和url打交道是无法避免的了,url模块提供一些基础的url处理。

parse函数的基础用法

parse函数的作用是解析url,返回一个json格式的数组,请看如下示例:

var url = require('url');
url.parse('http://www.baidu.com');
conosle.log(url.parse('http://www.baidu.com'));

运行结果:

{ protocol: 'http:',
  slashes: null,
  auth: null,
  host: null,
  port: null,
  hostname: null,
  hash: null,
  search: null,
  query: null,
  pathname: 'www.baidu.com',
  path: 'www.baidu.com',
  href: 'http://www.baidu.com' }

parse函数 —— 条件解析

parse函数的第二个参数是布尔类型,当参数为true时,会将查询条件也解析成json格式的对象。

var url = require('url');
url.parse('http://www.baidu.com?page=1',true);

运行结果:

{ protocol: 'http:',
  slashes: true,
  auth: null,
  host: 'www.baidu.com',
  port: null,
  hostname: 'www.baidu.com',
  hash: null,
  search: '?page=1',
  query: { page: '1' },
  pathname: '/',
  path: '/?page=1',
  href: 'http://www.baidu.com/?page=1' }

试一试,当参数分别为true和false时,返回数据中的query字段的内容有什么不同。

parse函数 —— 解析主机

parse函数的第三个参数也是布尔类型的,当参数为true,解析时会将url的”//”和第一个”/”之间的部分解析为主机名,示例如下:

var url = require('url');
url.parse('http://www.baidu.com/news',false,true);

运行结果:

{ protocol: 'http:',
  slashes: true,
  auth: null,
  host: 'www.baidu.com',
  port: null,
  hostname: 'www.baidu.com',
  hash: null,
  search: null,
  query: null,
  pathname: '/news',
  path: '/news',
  href: 'http://www.baidu.com/news' }

较之前面的示例,host的内容不再是null了。

format函数的基础用法

format函数的作用与parse相反,它的参数是一个JSON对象,返回一个组装好的url地址,请看如下示例:

var url = require('url');
url.format({
protocol: 'http:',
hostname:'www.baidu.com',
port:'80',
pathname :'/news',
query:{page:1}
});

运行结果:

http://www.baidu.com/news?page=1

参数JSON对象的字段跟parse函数解析后返回的JSON字段一一对应。

resolve函数的基础用法

resolve函数的参数是两个路径,第一个路径是开始的路径或者说当前路径,第二个则是想要去往的路径,返回值是一个组装好的url,示例如下:

var url = require('url');

url.resolve('http://example.com/', '/one')  // 'http://example.com/one'
url.resolve('http://example.com/one', '/two') // 'http://example.com/two'

动动手,试一试resolve函数。

课程小结

本节课程讲解了url模块常用的一些功能,如果你想了解更多,可以参考以下资料:
http://nodejs.cn/api/url

练习代码

url.parse('http://www.baidu.com?page=1',true);

console.log(url.parse('http://www.baidu.com?page=1',false));

console.log(url.parse('http://www.baidu.com/news',false,true));
    var url = require('url');
    console.log(url.format({
    protocol: 'http:',
    hostname:'www.baidu.com',
    port:'80',
    pathname :'/news',
    query:{page:1}
    }));

var url = require('url');

console.log(url.resolve('http://www.baidu.com/','page=1'));
Node.js 中使用 WebSocket 时,可以通过不同的库来实现,比如 `ws` 或者 `socket.io` 等。不同的库有不同的设置方式来设置 WebSocket 的访问路径。以下是在使用 `ws` 库设置 WebSocket 访问路径的一个简单示例: 首先,你需要安装 `ws` 库,可以通过 npm 来安装: ```bash npm install ws ``` 然后,你可以创建一个 WebSocket 服务器,并设置一个特定的路径来监听连接。以下是一个简单的示例代码: ```javascript const WebSocket = require('ws'); // 创建一个新的 WebSocket 服务器实例,监听 8080 端口 const wss = new WebSocket.Server({ port: 8080 }); // 为服务器添加一个事件监听器,当有新的连接时触发 wss.on('connection', function connection(ws) { console.log('Client connected'); // 当接收到客户端消息时的处理逻辑 ws.on('message', function incoming(message) { console.log('received: %s', message); }); // 当客户端断开连接时的处理逻辑 ws.on('close', function(code, reason) { console.log(`Client disconnected with code ${code} and reason: ${reason}`); }); }); ``` 如果你想设置一个特定的路径,比如 `/websocket`,那么可以使用 HTTP 服务器来处理这部分逻辑,并将 WebSocket 连接代理到 ws 服务器: ```javascript const http = require('http'); const WebSocket = require('ws'); // 创建一个 HTTP 服务器监听 8080 端口 const server = http.createServer((req, res) => { // 检查请求的路径是否为 '/websocket' if (req.url === '/websocket') { // 是,将请求代理到 WebSocket 服务器 wss.handleUpgrade(req, req.socket, Buffer.alloc(0), function done(ws) { wss.emit('connection', ws, req); }); } else { // 否,返回 404 或其他响应 res.writeHead(404); res.end(); } }); // 创建 WebSocket 服务器并将其与 HTTP 服务器关联 const wss = new WebSocket.Server({ server }); wss.on('connection', function connection(ws) { // 与之前相同的处理逻辑 }); server.listen(8080); ``` 在这个例子中,只有当客户端请求 `/websocket` 路径时,才会建立 WebSocket 连接,否则会返回 404 响应。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值