Q1. How do you implement routing in a raw Node.js HTTP server?
Parse req.method and req.url to determine the route. Example:
const { method, url } = req;
if (method === 'GET' && url === '/users') {
// handle get users
} else if (method === 'POST' && url === '/users') {
// handle create user
} else {
// 404
}
This forms the basis of routing.Q2. How do you handle dynamic routes like /users/:id?
Parse the URL and extract parameters using regular expressions or string manipulation. Example:
const urlParts = req.url.split('/');
if (req.url.startsWith('/users/') && urlParts.length === 3) {
const id = urlParts[2];
// handle user with id
}
More sophisticated routing would use URL pattern matching.Q3. How do you parse query parameters in a route?
Use the url module:
const url = require('url');
const parsedUrl = url.parse(req.url, true);
const query = parsedUrl.query; // object with query params
const pathname = parsedUrl.pathname;
Then use pathname for routing and query for parameters like ?page=2.Q4. How do you handle different HTTP methods for the same route?
Check req.method inside your route handler. Example:
if (req.url === '/api/data') {
switch(req.method) {
case 'GET':
// handle GET
break;
case 'POST':
// handle POST
break;
default:
res.statusCode = 405;
res.end('Method Not Allowed');
}
}
This implements RESTful routing.Q5. How do you create a simple router function?
Create a routes object:
const routes = {
'GET /': homeHandler,
'GET /users': usersHandler,
'POST /users': createUserHandler
};
Then in the server, look up handler based on `${req.method} ${req.url}`. This pattern is the foundation of many routing libraries.