我有一个接收两个参数的get路由"limit"one_answers"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();
问题是当我从postman发出请求时这些参数是未定义的。
localhost:3000/api/users/?limit=2&page=1
你正在传递查询参数,但是你的路由需要路由参数。
要使用路由参数,你的请求应该看起来像http://localhost:3000/api/users/2/1
通常情况下,分页是作为查询参数传递的,在这种情况下,你的路由处理程序应该是这样的
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;
}
}