2016-12-17 21 views
0

私はバックエンドを使用して、?ノットとurl埋め込みの両方の検索クエリパラメータにアクセスします。私は私が使用できることを知っています。リクエストを行うURLSearchParams/RequestOptionsArgs。 http://mydomain/api/card?id=abcurl埋め込まれたparamersを@ angular/httpに設定する

しかし、私は、たとえば、アプリケーションパスを定義するときに、例えば、「card /:id」のようなURLを定義することによって、http://mydomain/api/card/abcのようなmor RESTishをどのように使用できますか?これだけ、

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

そのようなアプローチが可能です。私は本当にこの "手動の" URLビルドを避けようとしていて、angularjs1のような自動置換を望んでいました。そこでは、パラメータ名と値を提供することができ、フレームワークによって置換えが行われました。 しかし、それではanglejs2には何もありませんか? –

+0

申し訳ありません。私は角度1についてよく分かりませんが、角度2では、サービスを作成してパラメータ名と値を渡すことができます。サービスでは、これらの値を取得リクエストまたは投稿リクエストに自動的に入れます。このような体でリクエストするにはJSONを渡す必要があります._http.post(api_url、JSON.stringify(body)、options).map(this._extractData) .catch(this._handleError); –

0

あなたはちょうどあなたがサポートする形式でURLを渡す必要があります。

次snippletは、私は、たとえば午前どのようになりましたGETリクエストを構築していますあなたの望むRESTのURLのように見えるあなたの関数にURLを渡してください。

次に、新しいURLを理解するためにバックエンドを変更するだけです。あなたはバックエンドでどの技術を使用しているのかは言わない。 NodeJSを使用している場合は、/:id表記でURLパラメータと経路を処理するのに最適なexpressJSをお勧めします。

+0

私の現在のフレームワークはvert.x rest verticleです。 vert.xは、すでに両方の形式を理解しているだけの柔軟性を備えています。それ以前はです。実際にはnodejs/expressバックエンドを使用しました。 しかし、サーバーは問題ではありません。問題は、angularjs2のhttpクライアントをパラメータの置き換え先にすることです。 –

関連する問題