Je suis un étudiant de première année dans Nest.js.
Et mon code comme ci-dessous
@Get('findByFilter/:params')
async findByFilter(@Query() query): Promise<Article[]> {
}
J'ai utilisé le postman pour tester ce routeur
http: // localhost: 3000 / article / findByFilter / bug? google = 1 & baidu = 2
En fait, je peux obtenir le résultat de la requête { google: '1', baidu: '2' } . Mais je ne sais pas pourquoi l'URL a une chaîne 'bug' ?
Si je supprime ce mot comme
http: // localhost: 3000 / article / findByFilter? google = 1 & baidu = 2
puis le facteur affichera statusCode 404 .
En fait, je n'ai pas besoin du mot bug , comment personnaliser le routeur pour réaliser ma destination, tout comme http://localhost:3000/article/findByFilter?google=1&baidu=2
Voici une autre question: comment faire pointer plusieurs routeurs vers une méthode?
3 Réponses :
Vous devez supprimer :params pour que cela fonctionne comme prévu:
localhost:3000/other localhost:3000/test localhost:3000/te123st // ...
La syntaxe :param est pour les paramètres de chemin et correspond à n'importe quelle chaîne sur un chemin:
@Get('other|te*st')
correspond aux itinéraires
localhost:3000/products/1 localhost:3000/products/2abc // ...
Pour faire correspondre plusieurs points de terminaison à la même méthode, vous pouvez utiliser des caractères génériques de route:
@Get('products/:id')
getProduct(@Param('id') id) {
correspondra
@Get('findByFilter')
async findByFilter(@Query() query): Promise<Article[]> {
// ...
}
heureux de vous revoir. votre solution fonctionne pour moi. btw, pouvez-vous m'offrir un e-mail ou autre chose, vous savez que je suis un étudiant de première année dans le nid et le typeorm. mais parfois je dois faire face à des problèmes, je vais créer une nouvelle question sur le débordement de pile. Je veux t'envoyer le lien si ça ne te dérange pas.
Heureux d'avoir pu aider! :-) Pas de soucis, je vérifie fréquemment toutes les questions sur nest.js. Mais assurez-vous d'utiliser la bonne balise [nestjs] au lieu de [nest].
Réponse géniale.
on peut utiliser @Req ()
{
"framework": "nest",
"version": "7"
}
/ nest? version = 7
@Get(':framework')
getData(@Req() request: Request): Object {
return {...request.params, ...request.query};
}
J'ai dû mettre ce code ... import {Request} de 'express'; ... en plus du script pour que cela fonctionne!
Vous pouvez utiliser le décorateur @Req et utiliser l'objet param, voir:
@Get()
findAll(
@Req() req: Request
): Promise<any[]> {
console.log(req.query);
// another code ....
}