How to use query parameters in Nest.js?
You can use the @Req
decorator, and use param object, see :
@Get()
findAll(
@Req() req: Request
): Promise<any[]> {
console.log(req.query);
// another code ....
}
If you have you parameter as part or url: /articles/${articleId}/details, you wold use @Param
@Get('/articles/:ARTICLE_ID/details')
async getDetails(
@Param('ARTICLE_ID') articleId: string
)
IF you want to provide query params /article/findByFilter/bug?google=1&baidu=2, you could use
@Get('/article/findByFilter/bug?')
async find(
@Query('google') google: number,
@Query('baidu') baidu: number,
)
we can use @Req()
@Get(':framework')
getData(@Req() request: Request): Object {
return {...request.params, ...request.query};
}
/nest?version=7
{
"framework": "nest",
"version": "7"
}
read more
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
// ...