📜  如何在 ExpressJS 中获取完整的 URL?(1)

📅  最后修改于: 2023-12-03 14:52:17.376000             🧑  作者: Mango

在 ExpressJS 中获取完整的 URL

在实现 Web 应用程序时,获取 URL 是一项非常重要的任务。在 ExpressJS 中,获取 URL 非常简单,可以使用 req 对象的 protocolhostnameoriginalUrl 属性来获取 URL 的各个部分,然后将它们组合成完整的 URL。下面是一些示例代码,展示了如何在 ExpressJS 中获取完整的 URL。

实现方式

在 ExpressJS 中,使用 req 对象的 protocolhostnameoriginalUrl 属性来获取 URL 的各个部分,然后将它们组合成完整的 URL。下面是一些示例代码,展示了如何在 ExpressJS 中获取完整的 URL。

示例代码1:使用 req.protocol 和 req.hostname
const express = require('express');
const app = express();

app.get('/', (req, res) => {
  const fullUrl = req.protocol + '://' + req.hostname + req.originalUrl;
  res.send(fullUrl);
});

app.listen(3000);
示例代码2:使用 req.get('host') 和 req.originalUrl
const express = require('express');
const app = express();

app.get('/', (req, res) => {
  const fullUrl = req.protocol + '://' + req.get('host') + req.originalUrl;
  res.send(fullUrl);
});

app.listen(3000);
示例代码3:使用 req.get('host') 和 req.baseUrl
const express = require('express');
const app = express();

app.get('/users', (req, res) => {
  const fullUrl = req.protocol + '://' + req.get('host') + req.baseUrl;
  res.send(fullUrl);
});

app.listen(3000);
相关属性介绍
req.protocol

req.protocol 表示请求所使用的协议,通常是 HTTP 或 HTTPS。

req.hostname

req.hostname 表示请求的主机名,例如 "example.com"。

注意:req.hostname 只包含主机名而不包含端口号。

req.originalUrl

req.originalUrl 表示请求的完整 URL,包含主机名、路径和查询字符串。

例如,如果请求的 URL 为 "https://example.com/users?name=john",那么 req.originalUrl 的值为 "/users?name=john"。

req.get('host')

req.get('host') 表示请求的主机名和端口号,例如 "example.com:3000"。

req.baseUrl

req.baseUrl 表示 ExpressJS 应用程序的基础路径,例如 "/users"。

注意:res.sendFile() 和 res.json() 函数会自动计算出正确的基础路径,因此不需要显式地使用 req.baseUrl。

总结

在 ExpressJS 中获取 URL 可以使用 req 对象的 protocolhostnameoriginalUrl 属性来获取 URL 的各个部分,然后将它们组合成完整的 URL。根据具体情况选择使用哪个属性来拼接 URL。