我正在尝试使用RESTful API从我的应用程序中的特定公司检索产品。
我正在尝试使用的GET方法是这样的:
http://localhost:3333/company/:company_id/products
所以我尝试了这种方法:
const routes = Router();
const company = `/company/:company_id`;
routes.use(`${company}/products`, productsRouter);
export default routes;
然后,在产品路由器内部,添加了以下内容:
const productsRouter = Router();
const productsController = new ProductsController();
productsRouter.get('/', productsController.index);
export default productsRouter;
如果我尝试通过浏览器或Insomnia访问路由,则可以正确找到该路由,但是无法:company_id
从第一个路由获取参数。当我设法得到它,但都request.params
和request.query
任何回报:
public async index(request: Request, response: Response): Promise<Response> {
const { company_id } = request.params;
const listProducts = container.resolve(ListProductsService);
const products = await listProducts.execute(company_id);
return response.json(products);
}
关于如何处理这种情况有什么想法?
mergeParams
路由器的使用选项。
mergeParams
保留
req.params
来自父路由器的值。如果父项和子项的参数名称冲突,则子项的值优先。默认值:false
const productsRouter = Router({mergeParams: true});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句