Search code examples
javascriptnode.jstypescriptexpressnestjs

How to use query parameters in Nest.js?


I am a freshman in Nest.js.

And my code as below

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

  }

I have used postman to test this router

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

Actually, I can get the query result { google: '1', baidu: '2' }. But I'm not clear why the url has a string 'bug'?

If I delete that word just like

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

then the postman will shows statusCode 404.

Actually, I don't need the word bug, how to custom the router to realize my destination just like http://localhost:3000/article/findByFilter?google=1&baidu=2

Here's another question is how to make mutiple router point to one method?


Solution

  • Query parameters

    You have to remove :params for it to work as expected:

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

    Path parameters

    The :param syntax is for path parameters and matches any string on a path:

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

    matches the routes

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

    Route wildcards

    To match multiple endpoints to the same method you can use route wildcards:

    @Get('other|te*st')
    

    will match

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