2017-10-20 5 views
0

Je souhaite appeler une API REST dans Angular4 contenant les paramètres d'URL. Le modèle ressemble que:Angular4 http get avec paramètre d'URL

http://localhost:61448/api/Product/language/{languauge}/name/{name} 

Ceci est un exemple de travail:

http://localhost:61448/api/Product/language/en-us/name/apple 

Je sais que je peux juste concat l'URL moi-même:

this.http.get<Array<ProductResponse>>('http://localhost:61448/api/Product/language/' + 'en-us' + '/name/' + 'apple',) 
     .subscribe(data => { 
     // do something with data 
    }); 

Mais j'espérais trouver un meilleure solution en utilisant quelque chose comme HttpParams:

const params = new HttpParams() 
.set('language', 'en-us') 
.set('name', 'apple'); 

this.http.get<Array<ProductResponse>>('http://localhost:61448/api/Product', {params : params}).subscribe(data => { 
    // do something with data 
}); 

Mais ce générerons la requête suivante (contenant des paramètres de requête):

http://localhost:61448/api/Product?language=en-us&name=apple 

Est-il possible de générer directement l'URL sans concat moi-même?

+0

Jetez un oeil à cette réponse ... [https://stackoverflow.com/a/41533506 /5874913](https://stackoverflow.com/a/41533506/5874913) – seven

+1

@seven Vos réponses suggérées ne m'aident pas, elles utilisent des paramètres de requête! Veuillez supprimer le drapeau en double. –

+1

La réponse est non. Utilisez simplement des chaînes de modèle pour le rendre légèrement plus lisible. –

Répondre

1

au lieu de:

this.http.get<Array<ProductResponse>>('http://localhost:61448/api/Product/language/' + 'en-us' + '/name/' + 'apple',) 
     .subscribe(data => { 
     // do something with data 
    }); 

faire:

this.http.get<Array<ProductResponse>>(`http://localhost:61448/api/Product/language/${languauge}/name/${name}`,) 
     .subscribe(data => { 
     // do something with data 
    }); 

language et name sont vos params.

avis caractère spécial de citations pour l'URL et vos params doivent être à l'intérieur ${}

lien ref: https://basarat.gitbooks.io/typescript/docs/template-strings.html

+0

Ce n'est pas exactement ce que je cherchais mais bien mieux que mon approche et assez pour moi. Merci! –

+0

Eh bien, d'après ce que je comprends de votre question, ce que vous cherchez est à peu près impossible, car le caractère dactylographié/angulaire ne peut pas savoir où dans l'URL de mettre quelle variable. vous devez avoir des ancres pour cela. et c'est à ça que servent ces méthodes. –