Context
Vegaa's context system is what makes automatic parameter injection possible. It's the invisible layer that connects everything together.
What is Context?
Context is an object that contains all available values for a request:
- Route parameters
- Query parameters
- Request body
- Middleware-provided values
- Headers
- And more...
How Context Works
When a request comes in, Vegaa:
- Extracts route parameters
- Parses query string
- Parses request body (if applicable)
- Runs middleware in order
- Builds a context object with all values
- Matches handler parameters to context values
- Calls your handler with the matched values
Accessing Context Directly
You can access the full context object if needed:
route('/example').get((ctx) => {
// ctx contains all available values
return {
params: ctx.params,
query: ctx.query,
body: ctx.body,
headers: ctx.headers
}
})
Context Values
Common context values:
params- Route parameters objectquery- Query string parameters objectbody- Request bodyheaders- Request headers- Any middleware-provided values
Middleware and Context
Middleware adds values to context:
vegaa.middleware(() => {
return {
user: { id: 1 },
timestamp: Date.now()
}
})
// These values are now in context
route('/profile').get((user, timestamp) => {
return { user, timestamp }
})
Parameter Matching
Vegaa matches handler parameters to context values by name:
// Context has: { id: '123', user: {...}, body: {...} }
route('/users/:id').post((id, user, body) => {
// id → context.params.id
// user → context.user (from middleware)
// body → context.body
})
Advanced Context Usage
Custom Context Values
Add custom values via middleware:
vegaa.middleware((query) => {
return {
apiVersion: query.v || 'v1',
requestId: generateId()
}
})
route('/api').get((apiVersion, requestId) => {
return { version: apiVersion, id: requestId }
})
Context Transformation
Transform context values:
vegaa.middleware((params) => {
return {
userId: parseInt(params.id),
isAdmin: params.role === 'admin'
}
})
Best Practices
- Use descriptive parameter names - Makes it clear what values you're using
- Group related values - Use objects for complex data
- Keep middleware focused - Each middleware should do one thing
- Use type hints - TypeScript helps catch context mismatches
Next Steps
- Explore Examples
- Learn about Express Compatibility