Как использовать параметры запроса в Nest.js? - PullRequest
0 голосов
/ 02 марта 2019

Я новичок в Nest.js.

И мой код, как показано ниже

  @Get('findByFilter/:params')
  async findByFilter(@Query() query): Promise<Article[]> {

  }

Я использовал postman для тестирования этого маршрутизатора

http://localhost:3000/article/findByFilter/bug?google=1&baidu=2

Собственно, я могу получить результат запроса { google: '1', baidu: '2' }.Но мне непонятно, почему в URL есть строка 'bug'?

Если я удаляю это слово так же, как

http://localhost:3000/article/findByFilter?google=1&baidu=2

, тогда почтальон покажет statusCode404.

На самом деле, мне не нужно слово bug, как настроить маршрутизатор для реализации моего пункта назначения так же, как http://localhost:3000/article/findByFilter?google=1&baidu=2

Вот еще один вопрос, как сделатьНесколько маршрутизаторов указывают на один метод?

1 Ответ

0 голосов
/ 03 марта 2019

Вы должны удалить :params, чтобы он работал должным образом:

@Get('findByFilter')
async findByFilter(@Query() query): Promise<Article[]> {
  // ...
}

Синтаксис :param предназначен для параметров пути и соответствует любой строке в пути:

@Get('products/:id')
getProduct(@Param('id') id) {

соответствует маршрутам

localhost:3000/products/1
localhost:3000/products/2abc
// ...

Подстановочные знаки маршрута

Чтобы сопоставить несколько конечных точек одному и тому же методу, вы можете использовать подстановочные знаки маршрута:

@Get('other|te*st')

будет соответствовать

localhost:3000/other
localhost:3000/test
localhost:3000/te123st
// ...
...