You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Node.js Express中获取当前请求的完整URL?

如何在Node.js Express中获取当前请求的完整URL?

你当前的方案里,req.url只能获取请求的路径部分(比如/api/user),无法得到包含协议、域名、端口的完整URL。下面是几种简便的实现方法:

方法一:手动拼接请求属性

Express的req对象自带构建完整URL所需的全部属性,直接拼接即可:

const app = express();
app.use(function(req, res, next) {
    const fullUrl = `${req.protocol}://${req.get('host')}${req.originalUrl}`;
    console.log(fullUrl);
    next();
});
  • req.protocol:获取请求使用的协议(http/https)
  • req.get('host'):获取请求的主机名(包含端口,比如localhost:3000或example.com)
  • req.originalUrl:获取完整的请求路径(包含查询参数,比如/api/user?id=123)

方法二:使用Node.js内置url.format()

借助Node.js原生url模块的格式化方法生成完整URL:

const url = require('url');
const app = express();
app.use(function(req, res, next) {
    const fullUrl = url.format({
        protocol: req.protocol,
        host: req.get('host'),
        pathname: req.originalUrl
    });
    console.log(fullUrl);
    next();
});

方法三:使用URL构造函数(Node.js 10+支持)

更现代的写法是利用原生URL构造函数:

const app = express();
app.use(function(req, res, next) {
    const fullUrl = new URL(req.originalUrl, `${req.protocol}://${req.get('host')}`);
    console.log(fullUrl.href); // 输出完整URL字符串
    next();
});

你的环境版本:

  • node -v:v16.15.1
  • npm -v:8.19.2

以上方法都能在你的环境中正常运行,可根据实际需求选择使用。

内容的提问来源于stack exchange,提问作者PRINCESS PRANITI

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 02:50:39