簡體   English   中英

Angular 2-帶有可選標頭的GET請求

[英]Angular 2 - GET Request with optional headers

我想執行一個具有多個參數的GET請求,但是只需要1個即可。

目前,我有以下代碼可以執行請求(我想在沒有任何可選參數的情況下進行通話)

服務:

public getAbsenceReservations(From: Date, ReservationStateID?: number, Resource?: string, To?: Date): Observable<models.AbsenceReservation> {

    let params: URLSearchParams = new URLSearchParams();
    params.set("From", From.toString());
    params.set("ReservationStateID", ReservationStateID.toString());
    params.set("Resource", Resource);
    params.set("To", To.toString());

    const path = `${this.apiEndpoint}Time/Absence`;
    return this.http.get(path, { search: params })
        .map((response: Response) => new models.AbsenceReservation().deserialize(response.json().Data))
        .catch(this.handleError);
}

零件:

private getAbsenceReservations() {
    this.loaderService.setEnableLoader(true);
    this.AbsenceService.getAbsenceReservations(this.fromDate, this.reservationStateID, this.resource, this.toDate)
        .subscribe(
        response => {
            this.absenceReservations = response;
            this.absenceReservationsChange.emit(this.absenceReservations);
            this.loaderService.setEnableLoader(false);
        },
        error => console.log("error")
        );
}

我收到錯誤

Cannot read property 'toString' of undefined

當然,沒有定義任何可選參數,這是導致錯誤的原因。

用可選參數編​​碼GET請求的正確方法是什么?

如果我有0個可選定義的可選變量

api.com/?from=timestamp

但是如果我有1個或更多,請執行此操作

api.com/?from=timestamp&Resource=RandomString

您只需要檢查以下內容即可。 其他一切都很完美。

params.set("From", From.toString()); //Required
if(ReservationStateID) params.set("ReservationStateID", ReservationStateID.toString());
if(Resource) params.set("Resource", Resource);
if(To) params.set("To", To.toString());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM