2017-11-29 13 views
0

HttpParamsのための私の最初のRESTとAngularドキュメントの使用は、少なくとも私にとっては無駄です。また、私は、おそらく多くの他の人は、いくつかのガイダンスをお願いします:-)Get HttpParamsとSQL JOINをGetリクエストで使用する方法

このURL文字列は正常に動作しますが、本当に醜いです:

return this.http 
     .get<DfApi>(this.baseUrl + dbTable + '?filter=' + '(' 
      + column1 + '%20like%20' + entry + '%25)%20or%20(' 
      + column2 + '%20like%20' + entry + '%25)', {headers: this.headers}); 

私は、文字列の補間を使用することができます知っているが、私のため、初心者には、上記の視覚化が容易です。私は "params = new HttpParams()。set ...;"ということを理解しています。 2017年9月上旬から使用されていません。このように、パラメータを設定する必要があります。

this.params = { 
     // do something 
     }; 

私は私がこれまで取得したいと考えている:

return this.http 
     .get<DfApi>(`${this.baseUrl}/${dbTable}`, 
        {params: this.params, headers: this.headers}); 

私はURL文字列になるパラメータを設定するには、私のURL文字列から取得するか見当がつかない。私はまだどこに教えるべきかのように思われるので、これに関するブログ投稿がないことに驚いています。

ところで、Postgresの私のヘッダーは古い方法を使用しています。

+0

パラメータはキー値のペアです。 Angularは、パラメータの値が何であるかを気にしません。文字列でなければならない、それだけです。 –

+0

"視覚化しやすい"笑! –

+0

このURL文字列にキー値のペアが表示されません。私はJSONを前後に送る方法を知っています。これはクエリです。あなたがすでに手がかりを持っているのであれば、おそらく簡単です... – Preston

答えて

0

2つの異なる検索を使用するコードでは、2つのデータベース列(フィールド)と2番目の列のみをクエリします。これは開発には問題ありませんが、生産上のセキュリティ上の懸念があります。

public search(dbTable: string, column1: string, column2: string, entry: string) { 

    if (column1 === 'main_skill1') { 

     this.params = { 
     'filter': `(${column1} like ${entry}%) or (${column2} like ${entry}%)` 
     }; 

     return this.http 
     .get<DfApi>(`${this.baseUrl}${dbTable}?`, {params: this.params, headers: this.headers}); 

    } else { 

     this.params = { 
     'filter': `(${column1} like ${entry}%)` 
     }; 

     return this.http 
     .get<DfApi>(`${this.baseUrl}${dbTable}?`, {params: this.params, headers: this.headers}); 

    } 
関連する問題