h3
Version:
118 lines (73 loc) • 2.75 kB
Markdown
> More H3 utilities.
Returns a new event handler that removes the base url of the event before calling the original handler.
**Example:**
```ts
const api = new H3()
.get("/", () => "Hello API!");
const app = new H3();
.use("/api/**", withBase("/api", api.handler));
```
Gets the context of the event, if it does not exists, initializes a new context on `req.context`.
Checks if the input is an H3Event object.
Checks if the input is an object with `{ req: Request }` signature.
Define a middleware that checks whether request body size is within specified limit.
If body size exceeds the limit, throws a `413` Request Entity Too Large response error. If you need custom handling for this case, use `assertBodySize` instead.
Define a middleware that runs when an error occurs.
You can return a new Response from the handler to gracefully handle the error.
Define a middleware that runs on each request.
Define a middleware that runs after Response is generated.
You can return a new Response from the handler to replace the original response.
Define WebSocket hooks.
**Example:**
```ts
const hooks = defineWebSocket({
open: (peer) => peer.send("Welcome!"),
message: (peer, message) => peer.send(message.text()),
close: (peer) => console.log("closed", peer),
});
```
Define WebSocket event handler.
By default, non-upgrade (plain HTTP) requests receive a `426 Upgrade Required` response. Pass an `http` handler to serve those requests instead, allowing the same route to handle both WebSocket upgrades and regular HTTP requests. WebSocket upgrade requests always go to `hooks`.
Note: the `http` handler only handles non-upgrade requests. To reject or customize the upgrade handshake itself, use the crossws `upgrade` hook instead.
**Example:**
```ts
// WebSocket-only route (non-upgrade requests get `426 Upgrade Required`)
app.get(
"/_ws",
defineWebSocketHandler({
message: (peer, message) => peer.send(message.text()),
}),
);
```
**Example:**
```ts
// Handle both WebSocket upgrades and plain HTTP on the same route
app.get(
"/_ws",
defineWebSocketHandler(
{ message: (peer, message) => peer.send(message.text()) },
() => "Send a WebSocket upgrade request to connect.",
),
);
```