Server Utilities

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 对象,代表当前向服务器发起的请求。 你可以访问它的属性,比如 urlheaders。 然而,对于服务器函数或渲染这样已经处理映射的情况,通常不需要直接处理 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 调用时影响响应。 这很重要,因为之前设置的一些头部可能不需要为整个页面设置,而只需要为特定请求设置。

注意: 在选择在哪里设置头部和响应时,需要牢记这一点。

报告此页面问题