getRequestEvent
编辑此页面Solid 使用异步本地存储作为在服务器上任何位置注入请求上下文的方式。
服务器提供了一个工具函数来访问这个上下文(称为 RequestEvent)。
import { getRequestEvent } from "solid-js/web"import type { RequestEvent } from "solid-js/web"
function getRequestEvent(): RequestEvent | undefined你可以通过调用 getRequestEvent 来获取请求事件:
import { getRequestEvent } from "solid-js/web";
const event = getRequestEvent();请求(Request)
RequestEvent 中最重要的属性是 .request。
这是一个 Web Request 对象,代表当前向服务器发起的请求。
你可以访问它的属性,比如 url 和 headers。
然而,对于服务器函数或渲染这样已经处理映射的情况,通常不需要直接处理 body。
import { getRequestEvent } from "solid-js/web";
const event = getRequestEvent();if (event) { const auth = event.request.headers.get("Authorization");}响应(Response)
getRequestEvent 也可以用来构建响应 - 这扩展了可以传递给 Response 构造函数 的选项。
这会保持更新,因此可以用于读取和写入当前响应的头部和状态。
import { getRequestEvent } from "solid-js/web";
const event = getRequestEvent();if (event) { event.response.headers.append("Set-Cookie", "foo=hello"); event.response.status = 201;}修改 event.response 或创建新的 Response
getRequestEvent 事件被视为全局的,持续整个请求的生命周期。
因此,如果你在服务器端渲染(SSR)期间或 RPC 调用时在服务器上调用服务器函数,在 event.response 上设置的值将反映在该请求上。
返回的响应只会在它是 RPC 调用时影响响应。 这很重要,因为之前设置的一些头部可能不需要为整个页面设置,而只需要为特定请求设置。
注意: 在选择在哪里设置头部和响应时,需要牢记这一点。
与 SolidStart 一起使用
查看关于请求事件的指南。