40

我正在阅读一本名为The Node Beginner Book 的关于 node.js 的入门书,并且在下面的代码中(书中给出)我不理解挂在 parse 方法上的 pathname 属性的重要性。所以我想知道它在做什么。我不清楚这种方法的文档

var pathname = url.parse(request.url)**.pathname;** 

var http = require("http");
var url = require("url");
function start(route, handle) {
function onRequest(request, response) {
    var pathname = url.parse(request.url).pathname;         // I don't understand the pathname property
    console.log("Request for " + pathname + " received.");
    route(handle, pathname);
    response.writeHead(200, {"Content-Type": "text/plain"});
    response.write("Hello World");
    response.end();
}
4

5 回答 5

60

pathname是 URL 的路径部分,位于主机之后和查询之前,包括初始斜杠(如果存在)。

例如:

url.parse('http://stackoverflow.com/questions/17184791').pathname    

会给你:

"/questions/17184791"
于 2013-06-19T07:11:36.683 回答
20

这是一个例子:

var url = "https://u:p@www.example.com:777/a/b?c=d&e=f#g";
var parsedUrl = require('url').parse(url);
...
protocol  https:
auth      u:p
host      www.example.com:777
port      777
hostname  www.example.com
hash      #g
search    ?c=d&e=f
query     c=d&e=f
pathname  /a/b
path      /a/b?c=d&e=f
href      https://www.example.com:777/a/b?c=d&e=f#g

还有一个:

var url = "http://example.com/";
var parsedUrl = require('url').parse(url);
...
protocol http:
auth     null
host     example.com
port     null
hostname example.com
hash     null
search   null
query    null
pathname /
path     /
href     http://example.com/

Node.js 文档:URL 对象

NodeJS 11+ 的更新

从 Node.js 11 开始,url.parse不赞成使用URL遵循WHATWG标准的类。解析非常相似,但有一些属性发生了变化:

const { URL } = require('url');
const url = "https://u:p@www.example.com:777/a/b?c=d&e=f#g";
const parsedUrl = new URL(url);
...
href         https://u:p@www.example.com:777/a/b?c=d&e=f#g
origin       https://www.example.com:777
protocol     https:
username     u
password     p
host         www.example.com:777
hostname     www.example.com
port         777
pathname     /a/b
search       ?c=d&e=f
searchParams { 'c' => 'd', 'e' => 'f' }
hash         #g
于 2017-09-15T18:42:18.770 回答
0

如果以下 url 在 nodejs 中被重定向“ http://localhost:9090/page/edit?pageId=1&type=edit

q.pathname 将是 URL 的“/page/edit”部分。请查找其他部分

http.createServer(function (req, res) {
 var q = url.parse(req.url, true);
 console.log(q.pathname);
 // /page/edit
 console.log(q.query['type'])
 // edit
 console.log(q)
 //will show below attached image
})

在此处输入图像描述

于 2020-04-19T17:22:08.467 回答
0
url.parse(urlString[, parseQueryString[, slashesDenoteHost]])

urlString:要解析的 URL 字符串。

parseQueryString : 如果为 true,则查询属性将始终设置为由 querystring 模块的 parse() 方法返回的对象。

slashesDenoteHost :如果为真,则文字字符串 // 之后和下一个 / 之前的第一个标记将被解释为主机

因此,url.parse() 方法接受一个 URL 字符串,对其进行解析,然后返回一个 URL 对象。

因此,

var pathname = url.parse(request.url).pathname;

将返回主机的路径名,后跟“/”

例如:

var pathname = url.parse(https://nodejs.org/docs/latest/api/url.html).pathname

将返回:

/docs//latest/api/url.html
于 2017-07-16T12:45:32.717 回答
0

路径名是位于服务器和端口之后的 URL 部分的一部分。在,var pathname = url.parse(request.url).pathname; request.url ,从 URL 部分请求 url,该部分是组件的集合 - localhost 的 IP 地址、端口号和文件路径名。

让我们通过一个例子来理解它假设这是请求到服务器 http://127.0.0.1:8082/的 url 但是为了响应客户端应该有一个 html 文件让它成为 index.html 然后 http://127.0 .0.1:8080/index.html 并且这个 html 文件是 url 的 .pathname。因此,在 var pathname = url.parse( http://127.0.0.1:8080/index.html).pathname 中,路径名是 index.html ,它是对客户端的响应。

于 2018-11-04T04:52:42.557 回答