Nodejs: маршрутизация без объявления типа

Я создаю маршрутизаторы, используя koa. Мы объявили два маршрутизатора, как показано ниже.

app.get('/order/:id', async ctx => {
  const { id } = ctx.params;
  try {
    const data = await order.findOne({
      where: { order_id: id }
    });
    ctx.body = data;
  } catch (e) {
    ctx.body = e.message;
  }
});

app.get('/order/customer', async ctx => {
  const { id } = ctx.request.user;
  try {
    const data = await order.findOne({
      where: { customer_id: id }
    });
    ctx.body = data;
  } catch (e) {
    ctx.body = e.message;
  }
});

Первый — это запрос, который выбирает заказ по order_id, а второй — это запрос, который выбирает заказ пользователя с идентификатором, аутентифицированным промежуточным программным обеспечением.

curl http://localhost:3000/order/1

order_id равен 1, когда я набираю выше.

curl http://localhost:3000/order/customer

Однако, в отличие от моего намерения, когда я ввожу вышеизложенное и проверяю запрос, order_id называется customer. Есть ли способ сделать URL простым, чтобы сделать /order/customer доступным?

Если у вас есть какие-либо вопросы, которые мне не хватает в вопросе, или если вы можете мне помочь, пожалуйста, прокомментируйте или ответьте.

🤔 А знаете ли вы, что...
JavaScript может выполняться как на стороне клиента (в браузере), так и на стороне сервера (с использованием Node.js).


1
40
1

Ответ:

Решено

У вас проблема с порядком определения маршрутов. Сначала у вас должен быть конкретный путь, а затем динамический маршрут. Здесь динамический маршрут, который я имел в виду для /:id:

'/order/customer' // first
'/order/:id' // later