Reputation: 44
I have a get route that receives two parameters "limit" and "page".
router.get('/:limit/:page', userController.list);
class UserController{
public list(req:Request, res:Response): void{
const limit:number = +req.params.limit || 25;
const page:number = +req.params.page || 0; }
}
export const userController: UserController = new UserController();
The problem is these params are undefined when I make the request from postman.
localhost:3000/api/users/?limit=2&page=1
Upvotes: 0
Views: 1610
Reputation: 164795
You're passing query parameters but your route wants route parameters.
To use route parameters, your request should look like http://localhost:3000/api/users/2/1
Typically though, pagination is passed as query parameters in which case your route handler should look like this
import { Request, Response } from "express";
interface PaginationQuery {
limit?: number;
page?: number;
}
type PaginationRequest = Request<{}, any, any, PaginationQuery>;
router.get('/', userController.list);
class UserController{
public list(req: PaginationRequest, res: Response): void {
const limit = req.query.limit ?? 25;
const page = req.query.page ?? 0;
}
}
Upvotes: 2