typescript - Cum voi transmite parametrii de interogare către API-ul REST într-un serviciu într-o aplicație Angular?
Încerc să transmit parametri de interogare într-un serviciu către o API REST.
Exemplu de cum ar trebui să trimit la API.(AȘTEPTAT)
http://localhost:2000/world/123456789/avengers?type=fruits&fields=_all
Am încercat după cum urmează:
all(countId) {
const headers: HttpHeaders = new HttpHeaders({
"_id" : countId,
"content-type" : "application/json"
});
let params = new HttpParams();
params = params.append("type", "fruits");
params = params.append("fields", "_all");
const options = {
headers: headers,
params: params
};
return this.http.put ( "http://localhost:2000/world/123456789/avengers", options )
}
Dar nu pot să le transmit ca parametri de interogare. Cum voi face asta?
Răspuns #1
În prezent, trimiteți opțiunile dvs. ca payload al cererii, așa cum ați descoperit. Dacă nu aveți un payload, puteți transmite null:
all(countId) {
// ....
return this.http.put("...", null, options)
^^^^
}
Răspunsul #2
Pentru că HTTP PUT/POST trimite corpul fără a adăuga șirul de interogare în URL (poți folosi o bibliotecă pentru a construi șirul de interogare), astfel încât trebuie să îți construiești URL-ul și opțiunea.
* @param url The endpoint URL.
* @param body The resources to add/update.
* @param options HTTP options
*
* @return An `Observable` of the response, with the response body as a JSON object.
*/
put(url: string, body: any | null, options?: {}
all(countId) {
const headers: HttpHeaders = new HttpHeaders({
"_id" : countId,
"content-type" : "application/json"
});
const options = {
headers: headers,
params: params
};
return this.http.put ( "http://localhost:2000/world/123456789/avengers??type=fruits&fields=_all", options)
}
