Skip to Content
Mock ServerRoutes and Middleware

How to define Mock API routes and middleware

MockServer works by allowing you to define API routes using mock object. mock is a global Express.js app automatically created by the underlying apigit mock server framework. You can define routes using mock.[method](...), following the guidelines provided in the Express.js documentation.

Here’s an overview of how MockServer simplifies creating APIs:

  • Use mock.[method](path, callback [, callback ...]) to define routes and request handlers.
  • Use mock.use([path,] callback [, callback...]) to add middlewares.
  • In the callback functions, please just use standard Express.js props like req and res to handle HTTP requests and responses.

Example: Defining Routes and Middleware

The following example shows how easy it is to create routes using MockServer:

mock.get("/user/:name", function (req, res) { return res.status(200).send("hello" + req.params.name); }); mock.post('/test-urlencoded', (req, res) => { console.log('Received x-www-form-urlencoded data:', req.body); res.status(200).send({ message: 'Received x-www-form-urlencoded data', data: req.body }); }); mock.get('/testauth', exampelAuthMiddleware, (req, res) => { res.status(200).send('This route is to deomostrate auth through middleware '); }); mock.get('/testmd2', firstMiddleware, secondMiddleware, (req, res) => { res.status(200).send('This route has multiple middlewares!'); });

Example: Middleware

Just like routes definition, you can use middleware to process requests before they reach the final route handler:

const exampelAuthMiddleware = (req, res, next) => { const authHeader = req.headers['authorization']; if (!authHeader) { return res.status(401).send('Authorization header missing'); } const token = authHeader.split(' ')[1]; if (!token) { return res.status(401).send('Token missing'); } try { const SECRET_KEY = 'your-secret-key'; const decoded = jwt.verify(token, SECRET_KEY); req.user = decoded; next(); } catch (err) { return res.status(403).send('Invalid token'); } }; function firstMiddleware(req, res, next) { console.log('First middleware'); next(); } function secondMiddleware(req, res, next) { console.log('Second middleware'); next(); } mock.use((req, res, next) => { console.log("middware for all routes"); next(); }); mock.get('/testauth', exampelAuthMiddleware, (req, res) => { res.status(200).send('This route is to deomostrate auth through middleware '); }); mock.get('/testmd2', firstMiddleware, secondMiddleware, (req, res) => { res.status(200).send('This route has multiple middlewares!'); });

The mock.use() function can be used to define middleware for all routes or specific paths, just like in an Express app.

Working with Requests and Responses

MockServer provides a simple way to interact with requests and responses using standard Express.js conventions. Below are some examples of common tasks:

Handling Route Parameters and Query Parameters

mock.get('/repository/:user/:repo', (req, res) => { const { user, repo } = req.params; res.json({ message: 'Repository Details', user: user, repo: repo }); }); mock.get('/search', (req, res) => { const { keyword, page, limit } = req.query; res.json({ message: 'Search Parameters Received', keyword: keyword || 'none', page: page ? parseInt(page, 10) : 1, limit: limit ? parseInt(limit, 10) : 10 }); });

Setting Response Status and Headers

mock.get('/not-found', (req, res) => { res.status(404).json({ message: 'Resource not found', code: 404 }); }); mock.get('/single-header', (req, res) => { res.set('Content-Type', 'application/json'); res.set('X-Custom-Header', ['value1', 'value2']); res.json({ message: 'Headers set successfully!' }); });

For more information, please check the official Express.js documentation.

Last updated on