Context (ctx
)
The Context
object (ctx
) is the central interface for handling HTTP requests in Jetpath. It provides:
- Access to request data (body, query, params)
- Tools for crafting responses
- Integration with plugins and validation
- State management for the request lifecycle
Usage Examples
Basic Request
// Basic route handler
export const GET_user = async (ctx) => {
// Access query parameters
const page = ctx.query.page || '1';
// Get request headers
const authHeader = ctx.get('Authorization');
// Send JSON response
ctx.send({
message: 'Success',
page: parseInt(page)
});
}
File Upload with Validation
// Using ctx.parse() for file uploads with validation
export const POST_upload = async (ctx) => {
const data = await ctx.parse({
maxBodySize: 10 * 1024 * 1024, // 10MB limit
contentType: 'multipart/form-data'
});
// Validate file data
if (!data.files || !data.files.file) {
ctx.send( 'No file uploaded',400);
return
}
ctx.send({ message: 'Files uploaded successfully' });
}
WebSocket Connection
// WebSocket route handler
export const GET_live = async (ctx) => {
// Upgrade to WebSocket
ctx.upgrade();
// Access WebSocket connection
const conn = ctx.connection!;
// Handle WebSocket events
conn.addEventListener('message', (data) => {
// Handle incoming messages
});
conn.addEventListener('close', () => {
// Handle connection close
});
}
Best Practices
- Type Safety: Use generics to define expected data shapes
- Error Handling: Use
ctx.send(error, <http status code>)
for HTTP errors - State Management: Use
ctx.state
for request-scoped data and attach user info if authenticated - Security: Always validate input data and implement proper authentication
- Response Handling: Use appropriate methods for different response types and include request ID in headers
- Logging: Use
ctx.plugins.logger
for detailed request logging with request ID and duration - Headers: Add standard response headers including X-Request-ID and X-Response-Time
Key Features
Request Data Access
body
: Parsed request body dataquery
: URL query parametersparams
: Route parameters- All type-safe based on
JetData
generic plugins
: Returns the plugin object
Response Handling
send()
: Send response datasendStream()
: Stream filesdownload()
: Force file downloadsendResponse()
: Send raw Response object
Navigation
redirect()
: Redirect requests- Sets appropriate headers
- Ends request cycle
Headers & Cookies
get()
: Get request headersset()
: Set response headers- Cookie methods:
getCookie()
,setCookie()
,clearCookie()
WebSocket
upgrade()
: Upgrade to WebSocketconnection
: WebSocket interface- Handles WebSocket lifecycle
Additional Properties
request
: Request objectconnection
: jet_socket objectcode
: HTTP status codepath
: Request pathpayload
: Request payload