Advanced
Session utils
clearSession(event, config)
Clear the session data for the current request.
getSession(event, config)
Get the session for the current request.
sealSession(event, config)
Encrypt and sign the session data for the current request.
unsealSession(_event, config, sealed)
Decrypt and verify the session data for the current request.
updateSession(event, config, update?)
Update the session data for the current request.
useSession(event, config)
Create a session manager for the current request.
Cookie utils
deleteCookie(event, name, serializeOptions?)
Remove a cookie by name.
getCookie(event, name)
Get a cookie value by name.
parseCookies(event)
Parse the request to get HTTP Cookie header string and return an object of all cookie name-value pairs.
setCookie(event, name, value, serializeOptions?)
Set a cookie value by name.
Sanitize
sanitizeStatusCode(statusCode?, defaultStatusCode)
Make sure the status code is a valid HTTP status code.
sanitizeStatusMessage(statusMessage)
Make sure the status message is safe to use in a response.
Allowed characters: horizontal tabs, spaces or visible ascii characters: https://www.rfc-editor.org/rfc/rfc7230#section-3.1.2
Route
useBase(base, handler)
Prefixes and executes a handler with a base path.
Example:
const app = createApp();
const router = createRouter();
const apiRouter = createRouter().get(
"/hello",
defineEventHandler((event) => {
return "Hello API!";
}),
);
router.use("/api/**", useBase("/api", apiRouter.handler));
app.use(router.handler);
Cache
handleCacheHeaders(event, opts)
Check request caching headers (If-Modified-Since
) and add caching headers (Last-Modified, Cache-Control) Note: public
cache control will be added by default
Proxy
fetchWithEvent(event, req, init?, options?: { fetch: F })
Make a fetch request with the event's context and headers.
getProxyRequestHeaders(event)
Get the request headers object without headers known to cause issues when proxying.
proxyRequest(event, target, opts)
Proxy the incoming request to a target URL.
sendProxy(event, target, opts)
Make a proxy request to a target URL and send the response back to the client.
CORS
appendCorsHeaders(event, options)
Append CORS headers to the response.
appendCorsPreflightHeaders(event, options)
Append CORS preflight headers to the response.
handleCors(event, options)
Handle CORS for the incoming request.
If the incoming request is a CORS preflight request, it will append the CORS preflight headers and send a 204 response.
If return value is true
, the request is handled and no further action is needed.
Example:
const app = createApp();
const router = createRouter();
router.use('/',
defineEventHandler(async (event) => {
const didHandleCors = handleCors(event, {
origin: '*',
preflight: {
statusCode: 204,
},
methods: '*',
});
if (didHandleCors) {
return;
}
// Your code here
})
);
isCorsOriginAllowed(origin, options)
Check if the incoming request is a CORS request.
isPreflightRequest(event)
Check if the incoming request is a CORS preflight request.
Server Sent Events (SSE)
createEventStream(event, opts?)
Initialize an EventStream instance for creating server sent events
Example:
import { createEventStream, sendEventStream } from "h3";
eventHandler((event) => {
const eventStream = createEventStream(event);
// Send a message every second
const interval = setInterval(async () => {
await eventStream.push("Hello world");
}, 1000);
// cleanup the interval and close the stream when the connection is terminated
eventStream.onClosed(async () => {
console.log("closing SSE...");
clearInterval(interval);
await eventStream.close();
});
return eventStream.send();
});