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?
You have to remove :params
for it to work as expected:
@Get('findByFilter')
async findByFilter(@Query() query): Promise<Article[]> {
// ...
}
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
// ...
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
// ...