event
对象有一个 fetch
方法,其行为类似于标准的 Fetch API,但拥有超能力
- 它可用于在服务器上进行经过身份验证的请求,因为它继承了来自传入请求的
cookie
和authorization
标头 - 它可以在服务器上进行相对请求(通常,
fetch
在服务器上下文中使用时需要具有原点的 URL) - 内部请求(例如,针对
+server.js
路由的请求)在服务器上运行时会直接转到处理程序函数,而无需 HTTP 调用的开销
其行为可以通过 handleFetch
钩子修改,默认情况下如下所示
src/hooks.server
export async function handleFetch({ event, request, fetch }) {
return await fetch(request);
}
例如,我们可以使用来自 src/routes/b/+server.js
的响应来响应对 src/routes/a/+server.js
的请求
src/hooks.server
export async function handleFetch({ event, request, fetch }) {
const url = new URL(request.url);
if (url.pathname === '/a') {
return await fetch('/b');
}
return await fetch(request);
}
稍后,当我们介绍 通用 load
函数 时,我们将看到 event.fetch
也可以从浏览器中调用。在这种情况下,如果您有来自浏览器的对公共 URL(例如 https://api.yourapp.com
)的请求,并且在服务器上运行时应将其重定向到内部 URL(绕过 API 服务器和公共互联网之间存在的任何代理和负载均衡器),则 handleFetch
很有用。
上一个 下一个
1
2
3
4
5
<script>
let { data } = $props();
</script>
<h1>{data.message}</h1>