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 .... }