Skip to main content
The HTTP module in AdonisJS Core provides a comprehensive set of tools for building web applications and APIs. It’s built on top of the @adonisjs/http-server package and includes additional features specifically designed for AdonisJS applications.

What’s included

The HTTP module provides the following core features:
  • Routing: Define routes with support for HTTP methods, parameters, middleware, and route groups
  • Controllers: Organize your application logic into controller classes
  • Middleware: Process requests before they reach your route handlers
  • Request handling: Access and validate incoming request data
  • Response handling: Send responses in various formats (JSON, HTML, files, etc.)
  • Request validation: Validate request data using VineJS validators
  • URL builder: Generate URLs for your named routes

Basic usage

Here’s a simple example of defining routes and handling requests:
import router from '@adonisjs/core/services/router'

// Simple route with closure
router.get('/hello', () => {
  return { message: 'Hello World' }
})

// Route with parameters
router.get('/users/:id', ({ params }) => {
  return { user: { id: params.id } }
})

// Route using a controller
router.post('/users', '#controllers/users_controller.store')

HttpContext

Every route handler receives an HttpContext object, which bundles together the request, response, and other useful properties:
import type { HttpContext } from '@adonisjs/core/http'

router.get('/profile', ({ request, response, auth, session }: HttpContext) => {
  // Access request data
  const user = await auth.user
  
  // Send response
  return response.json({ user })
})
The HttpContext object includes:
  • request: The Request object for accessing incoming data
  • response: The Response object for sending responses
  • params: URL parameters from the route
  • auth: Authentication helpers (when auth is configured)
  • session: Session management (when session is configured)
  • And more…

Project structure

HTTP-related files are typically organized as follows:
├── app/
│   ├── controllers/      # Controller classes
│   └── middleware/       # Middleware classes
├── start/
│   ├── routes.ts        # Route definitions
│   └── kernel.ts        # Middleware configuration

Next steps

Routing

Learn how to define routes and route groups

Controllers

Organize logic into controller classes

Middleware

Process requests with middleware

Validation

Validate request data with VineJS