nodejs常用模块-url模块

URL

nodejs中针对url的常用方法。
node下打印url,结果:

 引入url模块

var url = require('url')

import url from 'url';


1、parse方法

将url解析成对象,parse方法原型:

url.parse(urlStr[, parseQueryString][, slashesDenoteHost])

可传递三个参数,第一个必须
urlStr:要解析成对象的url字符串
parseQueryString:是否解析查询参数,默认为false
slashesDenoteHost:是否以斜线解析主机名,默认为false

只给第一个参数:

var url = require('url');

var testUrl1 = 'z.qingk.cn/information-info/tengzhou/e75bab8405254b04b2fab0a9f54e4838/dbvbotovboussowbwssvossdqaxqssxw/7519fbc4d85ea4c3589d8d751c507222/b011a8c5bbab4050953cb722bccb5095?param1=111&param2=222'
var urlParseUrl1 = url.parse(testUrl1)
console.log(urlParseUrl1);


结果:


第二个参数设为true

也就是说要同时把url中?之后的查询参数解析成对象

var url = require('url');

var testUrl1 = 'z.qingk.cn/information-info/tengzhou/e75bab8405254b04b2fab0a9f54e4838/dbvbotovboussowbwssvossdqaxqssxw/7519fbc4d85ea4c3589d8d751c507222/b011a8c5bbab4050953cb722bccb5095?param1=111&param2=222'
var urlParseUrl1 = url.parse(testUrl1);
console.log(urlParseUrl1);

var urlParseUrl2 = url.parse(testUrl1,true);
console.info(urlParseUrl2);


结果:

 第三个参数设置为true

也就是当不知道url协议时,以//为依据识别host

var testUrl2 = '//z.qingk.cn/information-info/tengzhou/e75bab8405254b04b2fab0a9f54e4838/dbvbotovboussowbwssvossdqaxqssxw/7519fbc4d85ea4c3589d8d751c507222/b011a8c5bbab4050953cb722bccb5095?param1=111&param2=222';

var urlParseUrl3 = url.parse(testUrl2,false,false);
console.info(urlParseUrl3);

var urlParseUrl4 = url.parse(testUrl2,false,true);
console.info(urlParseUrl4);


结果:


2、format方法

format就是parse的返过程,把对象转换成url字符串

var testObj1 = {
                protocol: null,
                slashes: true,
                auth: null,
                host: 'z.qingk.cn',
                port: null,
                hostname: 'z.qingk.cn',
                hash: null,
                search: '?param1=111&param2=222',
                query: 'param1=111&param2=222',
                pathname: '/information-info/tengzhou/e75bab8405254b04b2fab0a9f54e4838/dbvbotovboussowbwssvossdqaxqssxw/7519fbc4d85ea4c3589d8d751c507222/b011a8c5bbab4050953cb722bccb5095',
                path: '/information-info/tengzhou/e75bab8405254b04b2fab0a9f54e4838/dbvbotovboussowbwssvossdqaxqssxw/7519fbc4d85ea4c3589d8d751c507222/b011a8c5bbab4050953cb722bccb5095?param1=111&param2=222',
                href: '//z.qingk.cn/information-info/tengzhou/e75bab8405254b04b2fab0a9f54e4838/dbvbotovboussowbwssvossdqaxqssxw/7519fbc4d85ea4c3589d8d751c507222/b011a8c5bbab4050953cb722bccb5095?param1=111&param2=222'
                };
var rsUrl = url.format(testObj1);
console.info(rsUrl)


结果:

//z.qingk.cn/information-info/tengzhou/e75bab8405254b04b2fab0a9f54e4838/dbvbotovboussowbwssvossdqaxqssxw/7519fbc4d85ea4c3589d8d751c507222/b011a8c5bbab4050953cb722bccb5095?param1=111&param2=222


parse中每一种形式的url所生成的结果,format都可以进行逆过程的转换。

3、resolve方法

返回从根目录指定到当前目录的绝对路径url。返回结果去除参数和锚点,返回结果标准url路径格式

    var url=require('url');  
    //指定相对路径  
    var url1=url.resolve('http://qingk.cn/one/two/three','four');  
    console.log(url1); //http://qingk.cn/one/two/four  
    //指定根目录的相对路径  
    var url3=url.resolve('http://qingk.cn/one/two/three','/four');  
    console.log(url3); //http://qingk.cn/four  
    //带参数的相对路径  
    var url2=url.resolve('http://qingk.cn/one/two/three?name=zhangsan','four');  
    console.log(url2); //http://qingk.cn/one/two/four  
    //非标准分隔符的原路径  
    var url4=url.resolve('http://qingk.cn\\one#name1','/four');  
    console.log(url4);//http://qingk.cn/four  
    //非标准分隔符的相对路径  
    var url5=url.resolve('http://qingk.cn/one','\\two\\three');  
    console.log(url5);//http://qingk.cn/two/three  


————————————————
版权声明:本文为CSDN博主「thatway_wp」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/thatway_wp/article/details/79322405

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 `sync-request` 模块进行同步请求时,可以通过 `options` 对象来设置一些选项。以下是一些常用的选项: 1. `headers`:设置请求头。可以是一个对象,其中每个键值对表示一个请求头字段和对应的值。 2. `qs`:设置查询字符串参数。可以是一个对象,其中每个键值对表示一个参数名和对应的值。 3. `json`:设置请求体的内容为 JSON 数据。可以是一个对象,会自动将其序列化为 JSON 格式。 4. `body`:设置请求体的内容。可以是一个字符串,表示请求体的原始内容。 5. `timeout`:设置请求超时时间(以毫秒为单位)。如果请求在指定时间内没有得到响应,将触发超时错误。 6. `followRedirects`:设置是否自动跟随重定向。默认为 `true`,表示会自动跟随重定向。 7. `maxRedirects`:设置最大重定向次数。默认为 `10`。 8. `retry`:设置是否在请求失败时进行重试。默认为 `false`,表示不进行重试。 9. `retryDelay`:设置重试间隔时间(以毫秒为单位)。默认为 `2000` 毫秒。 10. `socketTimeout`:设置套接字超时时间(以毫秒为单位)。如果套接字在指定时间内没有活动,将触发超时错误。 这些选项可以根据你的具体需求进行设置。例如,如果需要设置请求头和查询字符串参数,可以将它们添加到 `options` 对象中,如下所示: ```javascript const request = require('sync-request'); const url = 'https://api.example.com/data'; const headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer token123' }; const params = { param1: 'value1', param2: 'value2' }; const options = { headers: headers, qs: params }; try { const response = request('GET', url, options); console.log(response.getBody('utf8')); } catch (error) { console.error(error); } ``` 在上述代码中,我们设置了请求头和查询字符串参数,并将它们添加到 `options` 对象中传递给 `request` 函数。 请注意,`sync-request` 模块的选项可能有限,如果你需要更高级的功能和选项,可能需要考虑使用其他网络请求库,如 `axios` 或 `node-fetch`。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值