【发布时间】:2021-04-13 11:04:33
【问题描述】:
我正在调用 getServerSideProps 并像这样传入 req 和 res 参数:
export async function getServerSideProps({ req, res }) {}
我需要获取当前浏览器的url路径,在request对象中找不到。 有没有办法在 getServerSideProps 中获取当前 url?
【问题讨论】:
我正在调用 getServerSideProps 并像这样传入 req 和 res 参数:
export async function getServerSideProps({ req, res }) {}
我需要获取当前浏览器的url路径,在request对象中找不到。 有没有办法在 getServerSideProps 中获取当前 url?
【问题讨论】:
您可以使用上下文参数中的resolvedUrl 字段。
export async function getServerSideProps({ req, res, resolvedUrl }) {
console.log(resolvedUrl)
// Remaining code
}
来自getServerSideProps 文档:
resolvedUrl:请求 URL 的规范化版本,去除_next/data客户端转换的前缀,包括原始查询值。
请注意,resolvedUrl 不会返回 URL 的域部分,只返回路径和查询字符串。
【讨论】:
getServerSideProps 中,resolvedUrl 参数包含 URL 的原始查询值。
/api?name=john 中,resolvedUrl 会给你/api?name=john 而不是/api。我没有在简单的用例中对此进行测试,但是我在 nextjs 中使用了路由重写,并且 resolvedUrl 没有返回任何查询参数。
/api 是一个 API 路由,不由 getServerSideProps 处理。使用重写可能会影响传递的内容,具体取决于您的设置方式。