Tox*_*nyc 4 javascript reactjs next.js
我想知道是否有办法获取 API 路由 (pages/api/myapi) 内当前请求的完整 URL,我看到的唯一返回的响应与我需要的接近req.headers.referer,但我不确定如果这个值总是在标题中。其类型是string | undefined.
还有req.headers.hostandreq.headers.origin但缺少协议。
最终目标是获取 API 处理函数中的完整 URL。即“https://example.org/api/test”
我在这里看到两个选择。
如果协议已知(例如http或https),则组合
req.headers.host- 返回主机名和端口号,例如localhost:3000req.url- 返回请求的路径,例如/api/test如果协议未知,那么我们必须深入挖掘才能获得完整的 URL。该req对象在键中公开Symbol(NextRequestMeta)以下值
{
...
[Symbol(NextRequestMeta)]: {
__NEXT_INIT_URL: 'http://localhost:3000/api/test',
_protocol: 'http',
}
}
Run Code Online (Sandbox Code Playgroud)
有多种方法可以访问对象中的 Symbol 属性。访问的一个示例__NEXT_INIT_URL是:
const nextRequestMeta = req[Reflect.ownKeys(req).find(
(s) => String(s) === "Symbol(NextRequestMeta)"
)];
console.log(nextRequestMeta.__NEXT_INIT_URL); // -> http://localhost:3000/api/test
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2966 次 |
| 最近记录: |