Node.JS/Express - 使用 URL 参数获取公司产品

Node.JS/Express - Get company products using URL params

我正在尝试使用 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.paramsrequest.query return 都没有:

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

Preserve the req.params values from the parent router. If the parent and the child have conflicting param names, the child’s value take precedence.

default value: false

const productsRouter = Router({mergeParams: true});