typescript - Hur kommer jag att skicka queryparametrar till ett REST API inuti en service i en Angular-applikation?


Jag försöker skicka frågeparametrar inuti en tjänst till ett REST API.

Exempel på hur jag ska skicka till API. (FÖRVÄNTAT)

http://localhost:2000/world/123456789/avengers?type=fruits&fields=_all

Har försökt enligt nedan:

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

Men jag kan inte skicka dem som frågeparametrar. Hur ska jag göra det?

Svar #1

Du skickar för närvarande dina alternativ som begärans nyttolast, som du har upptäckt. Om du inte har någon nyttolast kan du skicka null:

all(countId) {
  // ....
  return this.http.put("...", null, options)
                              ^^^^
}

Svar #2

Eftersom HTTP PUT/POST skickar kropp utan att lägga till frågesträng i URL:en (du kan använda något bibliotek för att bygga frågesträng) så att du behöver bygga din URL och alternativ

 * @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)
    }