ZEIT Now Server Server Functions - маршруты с параметрами - PullRequest
1 голос
/ 03 февраля 2020

Я создал 4 безсерверных маршрута

  • / api / list (GET)
  • / api / add (POST)
  • / api / update /: id (PUT)
  • / api / remove /: id (DELETE)

Я включил их в файл api / now. json, например:

{"src": "/api/list", "dest": "./list.js", "methods": ["GET"]},
{"src": "/api/add", "dest": "./add.js", "methods": ["POST"]},
{"src": "/api/update/*", "dest": "./update.js", "methods": ["PUT"]},
{"src": "/api/remove/*", "dest": "./remove.js", "methods": ["DELETE"]}

Работают маршруты / api / list и / api / add, которые не используют параметры, но / api / update и / api / remove не работают, потому что я, вероятно, не использовал регулярное выражение в API путь в указанном выше указанном сейчас. json файл правильно.

Обработчик для маршрутизатора выглядит следующим образом (только соответствующий путь)

app.put('/api/update/:id', (req, res) => {
  ...
});
module.exports = app;

1 Ответ

1 голос
/ 08 февраля 2020

src - это путь входящего запроса, который вы хотите сопоставить, а dest - файл, который должен быть выполнен.

Это означает, что вам не нужны никакие маршруты для первых двух, потому что посещение /api/list выполнит функцию в вашем файле /api/list.js и /api/add выполнит /api/add.js.

Вы можете использовать переписывает в файле now.json, чтобы определить маршруты, аналогичные express Patterns:

{
  "rewrites": [
    { "source": "/update/:id", "destination": "/api/update" },
    { "source": "/remove/:id", "destination": "/api/remove" }
  ]
}

Пример функции в /api/remove.js будет выглядеть следующим образом:

module.exports = (req, res) => {
  const { id } = req.query;
  res.send('Removing ID ' + id);
});

В качестве альтернативы, вы можете назвать свой файл /api/remove/[id].js, и тогда вы не будете нужно определить rewrites конфигурацию вообще. Это называется Сегменты пути .

...