2016-12-17 80 views
0

我使用了一個後端,它在?-notation和url-嵌入的方式中都支持搜索查詢參數。我知道我可以使用例如URLSearchParams/RequestOptionsArgs發出請求,例如到http://mydomain/api/card?id=abc@ angular/http中的網址嵌入式參數

但是,我怎麼可以例如像http://mydomain/api/card/abc那樣使用一個類似'card /:id'的URL,例如在定義應用程序路由時也可以這樣做?

以下snipplet是怎麼了,例如現在建立一個GET請求:

public getRequest(url: string, params: URLSearchParams): Observable <Response> { 
 
    let options: RequestOptionsArgs = { 
 
    url: url, 
 
    method: RequestMethod.Get, 
 
    headers: RestService.createHeaders(), 
 
    search: params, 
 
    responseType: ResponseContentType.Json 
 
    }; 
 

 
    let request: any = this.http.get(url, options); 
 
    return request.map((res: any) => { 
 
    let response = new ServerResponse(res); 
 
    if (response.status == ServerResponseStatus.OK) return response.data; 
 
    else console.log('ERROR: GET request ' + options + ' resulted in status:' + response.status); 
 
    }); 
 
    //.catch(this.handleError); 
 
}

回答

0

card/:id是一個語法,它說:id將被任何數字或字符串替換。因此,假設你更換這個後請求是http://mydomain/api/card/abc這裏abc是你:id不斷變化的部分。

你可以簡單地做到這一點。

let myid='abc'; 

`let url='http://mydomain/api/card/'+this.myid;` <- here id is a variable which you get as a argument. 

    let request: any = this.http.get(url, options); 
      return request.map((res: any) => { 
      let response = new ServerResponse(res); 
      if (response.status == ServerResponseStatus.OK) return response.data; 
      else console.log('ERROR: GET request ' + options + ' resulted in status:' + response.status); 
      }); 
      //.catch(this.handleError); 
     } 
+0

那種課程方式是可能的。我真的試圖避免這種「手動」網址建設,並希望像angularjs1中的自動替換。在那裏你可以提供參數名稱和值,並且替換是由框架進行的。 但是在angularjs2中沒有那樣的東西? –

+0

對不起。我不太瞭解angular 1,但是在角度2中,您可以創建一個服務並傳遞參數名稱和值,並且在服務中它會自動將這些值放到您的獲取或發佈請求中。你只需要傳遞你的json來請求這樣的主體this._http.post(api_url,JSON.stringify(body),options).map(this._extractData) .catch(this._handleError); –

0

你只需要在你想要支持的格式的URL來傳遞,所以只是傳遞一個URL到你的函數中,看起來更像你想要的REST url。

然後你只需要改變你的後端來理解新的URL。你不會說你在後端使用的是什麼技術。如果您使用的是NodeJS,那麼我會推薦expressJS,它在處理URL參數和路由時很有用/:id記號

+0

我的當前框架是一個vert.x休息垂直。 vert.x已經足夠靈活,可以理解兩種格式的開箱即用。 之前,我實際上使用了一個nodejs/express後端。 但服務器不是問題。問題是獲取angularjs2的http客戶端到參數替換。 –