Next.js allows you to create API routes within your application, enabling you to build full-stack applications without needing a separate backend server. API routes are stored in the pages/api
directory and can be used to handle backend logic, such as fetching data from a database or processing form submissions. In this article, we’ll explore how to create API routes in Next.js, how to handle requests and responses, and why it’s a game-changer for building full-stack applications.
What are API Routes?
API routes in Next.js are serverless functions that allow you to handle backend logic within your application. These routes are stored in the pages/api
directory and can be accessed via the /api
endpoint. API routes are ideal for handling tasks such as fetching data from a database, processing form submissions, or integrating with third-party APIs.
How to Create API Routes
To create an API route, follow these steps:
- Create a new file in the
pages/api
directory. For example,pages/api/hello.js
. - Export a default function that handles the request and response.
// pages/api/hello.js
export default function handler(req, res) {
res.status(200).json({ message: 'Hello, world!' });
}
In this example, the API route responds with a JSON object containing a message.
Handling Requests and Responses
API routes in Next.js use the req
and res
objects to handle requests and responses. The req
object contains information about the request, such as the HTTP method, headers, and query parameters. The res
object is used to send a response back to the client.
Handling Different HTTP Methods
You can handle different HTTP methods, such as GET
, POST
, PUT
, and DELETE
, by checking the req.method
property. Here’s an example:
// pages/api/user.js
export default function handler(req, res) {
if (req.method === 'GET') {
// Handle GET request
res.status(200).json({ name: 'John Doe' });
} else if (req.method === 'POST') {
// Handle POST request
const { name } = req.body;
res.status(201).json({ message: `User ${name} created` });
} else {
// Handle other HTTP methods
res.status(405).json({ message: 'Method not allowed' });
}
}
In this example, the API route handles GET
and POST
requests differently.
Connecting to Databases
API routes in Next.js can be used to connect to databases and fetch or update data. Here’s an example of how to connect to a MongoDB database:
// pages/api/users.js
import { MongoClient } from 'mongodb';
export default async function handler(req, res) {
const client = await MongoClient.connect(process.env.MONGODB_URI);
const db = client.db();
if (req.method === 'GET') {
const users = await db.collection('users').find().toArray();
res.status(200).json(users);
} else if (req.method === 'POST') {
const { name, email } = req.body;
const result = await db.collection('users').insertOne({ name, email });
res.status(201).json(result);
}
client.close();
}
In this example, the API route connects to a MongoDB database and handles GET
and POST
requests to fetch and insert user data.
Secrets and Hidden Facts
- Middleware: Use middleware to handle tasks like authentication, logging, or error handling in API routes.
- Environment Variables: Use environment variables to store sensitive information, such as database credentials or API keys.
- Rate Limiting: Implement rate limiting to prevent abuse of your API routes.
Conclusion
API routes in Next.js provide a powerful way to handle backend logic within your application, enabling you to build full-stack applications without needing a separate backend server. Whether you’re fetching data from a database, processing form submissions, or integrating with third-party APIs, API routes provide the tools and flexibility you need to create robust and scalable applications.

No comments: