2016-10-05 13 views
0

私は2つの異なるクエリ文字列/パラメータ構造を必要とする2つのAPIを持っていますが、これをどうやって行うのか自分自身で理解しようとしています。これは、検索を行うには、ボタンのinputその基本的にクリックするだけを持っていないため角2 HTTP要求のクエリ文字列を作成する

両方のAPIがGET要求しているがAPI 1 URLリクエストは、

www.website.com/api/User?username=niceguy 

API 2リクエストURLのようなものです、 API1はクエリ文字列構造を構築するためにinputを持っています。

www.website.com/api/User 

二つの異なるクエリ文字列が、私は唯一のため、私はそれは難しい私のクエリ文字列を構築するために見つけることだダイナミックな目的のために1つの検索機能を使用しています、同じオブジェクトを返します。

クエリ文字列を作成するための関数を作成しましたが、API 1構造体しか使用しませんでした。

HTTPリクエストがAPI 2構造をどのように受け取ることができるかを誰かが指摘できますか?

function queryStringBuild() { 
let result: string = "?"; 
     //for each of the input search terms... 
    this.searchBoxCount.forEach((inputSearch: any) => { 
    // first reparse the input values to individual key value pairs 
    // Checks which field is not null and with empty string (space) 
    if (inputSearch.value != null && (inputSearch.value != "")) { 
     let inputValues: string = inputSearch.value 
      .split("\n") 
      .filter(function (str) { return str !== "" }) 
      .join("&" + inputSearch.name + "="); 
      // then add it to the overall query string for all searches 
      result = result + inputSearch.name + "=" + inputValues + "&" 
     } 
    }); 
    // remove trailing '&' 
    result = result.slice(0, result.length - 1); 
    return result; 
} 

APIリクエスト

getRequest() { 
this.http.get('www.website.com/api/' + this.queryStringBuild) 
... 
} 
+1

Angular2の 'URLSearchParams'を使用し、自分でクエリ文字列を構築しないでください。 –

答えて

0

私はURLSearchParamsを使用して、さまざまなソリューションを提案したいです。

let params = new URLSearchParams(); 
this.searchBoxCount.forEach((inputSearch: any) => { 
    if (inputSearch.value != null && (inputSearch.value != "")) { 
     let filteredValue = inputSearch.split("\n") 
             .filter(x => x != "") 
             .join(","); 

     params.set(inputSearch.name, filteredValue); 
    } 
} 

this.http.get('www.website.com/api', { search: params }); 

APIの仕組みがわからないため、同じパラメータの複数の値をどのように連結するかはあなた次第です。

See this post for more information

関連する問題