J'ai une requête HTTP vraiment simple.
Mon extrémité avant: p> mon onduleur (): p> My Perservice GetPersonName (): P> private personURL = 'http://localhost:3000/api/persons'
constructor(private http: HttpClient) { }
getPersonByName(): Observable<Person> {
let params = new HttpParams().set('username', 'SwaX');
return this.http.get<Person>(this.personURL, { params });
}
3 Réponses :
Ceci est un problème avec votre API, pas angulaire. Vous ne filtrez pas votre réponse avant de l'envoyer sur le fil. Vous pouvez le corriger sur le côté API et le renvoyer un seul objet au lieu d'un tableau d'objets ou vous pouvez filtrer l'objet de la réponse dans la méthode GetPersonbyName de votre service () à l'aide de la carte -
getPersonByName(username: string): Observable<Person> { return this.http.get<Person[]>(this.personURL) .pipe( .map(people => people.find(person => person.username === username) ); }
Lorsque j'essaie d'utiliser trouver (), je reçois "la recherche" de la propriété "n'existe pas sur le type" personne "." Que devrais-je faire?
Il me manquait un .pipe () là-bas. Essayez-le avec la méthode de la carte enveloppée dans le tuyau comme indiqué dans le snippet édité ci-dessus.
Honnêtement, même si j'irais avec ce que les autres disent et obtiennent votre API pour renvoyer l'objet spécifique au lieu de la filtrer à partir d'une liste. Il est plus propre d'obtenir exactement ce dont vous avez besoin de l'API au lieu de passer à travers un tas de données sur le frontend.
Essayez:
return this.http.get<Person>(`${this.personURL}/1`);
j'ai toujours 3 objets
J'essaie de filtrer cette URL: localhost: 3000 / API / personnes à seulement 1 objet. Est-ce la mauvaise façon de penser? Parce que je viens de voir que Loopback a préparé cette URL pour moi: get / personnes / {id} et je l'ai essayé comme ça: Localhost: 3000 / API / Personnes / 1 qui fonctionne. Donc, je dois changer quelque chose dans l'API?
Essayez this.http.get
); code>
J'ai essayé ce renvoyer cela.http.get
Pour cela, votre backend devrait avoir un point final qui accepte le nom d'utilisateur> Faites-le votre backend?
Ok je l'obtiens que j'essaie d'entrer dans les points d'extrémité et d'en savoir plus sur ce merci. Maintenant, je sais quoi faire. Parce que je n'ai aucune connaissance de ce que jamais à propos des points finaux. Merci!
Peut-être que vous manquez quelque chose de petit, et c'est que les httpparams de la demande seraient mappés pour rejoindre l'URL. Ensuite, faire est similaire à faire p> qui devrait produire les mêmes résultats. Comme il s'agit d'une demande code> code>, vous pouvez également le tester à l'aide de votre navigateur. Ouvrez simplement P> sur votre navigateur et voyez ce qui vient. De cette façon, vous pourrez déterminer si le problème vient de votre API ou non. P> p> http: // localhost: 3000 / API / personnes? Nom d'utilisateur = swax code> p>
Montrer votre backend. Qu'est-ce qu'il s'attend à des paramètres?
La demande fonctionne. Le filtrage via l'objet httpparam "param" ne fonctionne pas.
Je veux juste savoir que votre backend s'attend à ce que l'ID ou le nom d'utilisateur
Vous avez testé la demande avec une autre application comme Postman? Ça marche?
Je vais l'essayer avec le facteur. Loopback me dit "Réponse de serveur 200" et je reçois les objets de la personne.
Postman me donne aussi la réponse que j'attends.
Afficher l'URL Postman que vous avez testé
localhost: 3000 / API / Personnes