2016-10-12 6 views
1

をルーティングとウェブAPIコントローラへの要求は、私はこのように定義された方法に適用されるルートの属性を持つWeb APIのコントローラを持っている:

[Route("api/[controller]")] 
public DataController(
[HttpGet("getdata/{a:int}/{b:int}/{dateFrom:datetime}/{dateTo:datetime}")] 
public IActionResult GetEvents(Int32 a, Int32 b, DateTime? dateFrom, DateTime? dateTo) 
{ 
    if (ModelState.IsValid) 
    { 
      data = dataService.GetData(a,b,dateFrom, dateTo); 
      return Ok(data); 
     } 

     return BadRequest(); 
    } 
} 

だから、暴露のWeb APIのURLは次のようになります。 http://localhost:port/api/data/getdata/1/2/2016-10-12T00:00:00/2016-10-20T00:00:00

PostmanのGoogle Chromeの拡張機能を使用してGETリクエストを送信すると、このコントローラのアクションに当てられ、URLパラメータが解析されます。OK。

私はangular2クライアントからのHTTP GETを使用して、このウェブAPIからデータを取得したいのですが:

let params: URLSearchParams = new URLSearchParams(); 
params.set('a', 1); 
params.set('b', 2); 
params.set('dateFrom', '2016-10-12T00:00:00Z'); 
params.set('dateTo', '2016-10-15T00:00:00Z'); 

    return this._http.get(this._eventsUrl, { 
     search: params 
    }).map((response: Response) => <ModelObject[]>response.json()) 
     .catch(this.handleError); 

このURLからデータを取得しようと、このコール: http://localhost:PORT/api/data/getdata?a=1&b=1&dateFrom=2016-10-12T00:00:00Z&dateTo=2016-10-15T00:00:00Z

は、どのように私は設定することができます。http .Windows APIのルーティングで定義されているようなURLを使用するには、角度2から取得しますか?

答えて

1

URLSearchParamsはurlの検索部分に '?'の後の部分であるparamsを追加します。

const url = `${this._eventsUrl}/${a}/${b}/${dateFrom}/${dateTo}`; 

注バッククォートの使用は、変数を含む文字列を構築a, b, dateFrom, dateTo、それが完璧に動作しますthis.http.get(url).map

+0

を呼び出すために、感謝:あなたはのようにURL全体を格納する変数を作成する必要があり

srlle

関連する問題