url模块

URL路由
URL:Uniform Resource Locator。统一资源定位器。还有一个就是URI(统一资源标识符),其中的I是指identifier。URL是基于URI的。在互联网中,任何一个资源(html、css、js、img、动画、视频、音频、word)需要保证它的唯一性。可以给每一个资源指定一个唯一的URL。简单来说,URL就是我们常说的网址。

在web当中,用户输入不同的URL,服务器就接收到这个信息,需要处理这个信息,根据不同的请求,返回相应的内容。这个过程就是URL路由。我们可以通过req对象(IncomingMessage对象)中的url属性,来获取相关的信息,并进行处理。

Node.js提供了一个url模块,可以解析url,得到更为详细的信息。url.parse(url)得到一个对象,里边包含整个url中的各种信息。

代码片段:

浏览器输入 localhost:3000/user?username=admin&pwd=123
路由处理 let realUrl = "http://"+ req.headers.host + req.url;
        let urlObj = url.parse(realUrl);//得到查询字符串query : 'username=admin&pwd=123'
解析查询字符串
打开一个网页,很多情况下路径名不发生变化,改变查询字符串,就会显示不同内容;附加的一些信息,需要根据这些信息,显示不同的内容给用户。

格式:?键1=值1&键2=值2&键n=值n

使用url.parse方法解析url之后,可以拿到查询字符串

Node.js提供了querystring 模块,其中有 parse 方法,可以将字符串解析成对象;这样就可以直接通过属性来获取相对应的值。

  1. 我们前边已经学了通过request.url获取用户访问的url,进而编写路由代码,将用户需要的数据或者是文件发给用户。
  2. 前边我们使用的url都是只有文件路径,一般情况下,我们在请求服务器的时候,还会给服务器发送一些数据,这些数据会被配置在url的后边,就想这样:https://hao.360.cn/?src=lm&ls=n642410819f ,这代表访问服务器根目录,并给服务发送了两条数据(数据被加密了)—— src=lm      ls=n642410819f。
  3. 我们现在写一个node服务器,用来输出用户访问的url。然后使用127.0.0.1:8888/?name=sc&age=18来访问这个服务器。我们会得到   
  4. 而我们编写的路由时只需要用文件路径部分“/”,用户发过来的数据(name=sc&age=18)还有其他作用,这时我们就需要对用户请求url进行处理,也就是查分成不用的部分。

 

  1. 一个较完整的url——

{协议}://{用户名}:{密码}@{主机名}:{端口号}/{路径}/{文件}?{参数}

2.当然我们的重点是研究我们需要的部分(端口以后的部分),然后了解端口之前部分(node服务器无法获得这部分url)

3.要想完成拆解url的目的,我们需要学习另外两个模块 url模块、querystring模块

Url模块 :拆分url

Querystring :将参数转化为对象(使用url拆解后得到的参数部分还不能直接使用,需要转换为对象,才能使用。)

Url模块

  1. 因为在服务器中使用request.url()的方式无法获得完整的url,所以我们需要自定义一个url做我们的小白鼠。
    1. url.URL 获得一个构造方法,用来构造url对象
    2. url.parse() 将字符串形式的url转化为对象
    3. Url.format() 将对象形式的url转化为字符串
    4. 补充一点:我们通过request.url()获得的是字符串形式的url
  2. 一个url对象包含如下属性:http://127.0.0.1:8888?name=sc&age=18’

  1. url对象的属性详解
  2. 我们需要也必须掌握的属性只有两个 pathname与search(因为request.url与path作用一致)

 

 

猜你喜欢

转载自blog.csdn.net/qq_43198747/article/details/86605998
URL