2016-11-03 16 views
0

私はPrimeNG datatableを使用しようとしており、いくつかの並べ替えとフィルタリング機能があります。私は安らかなAPIに検索/フィルタデータを送信したいが、それをどうやって行うのか決定することはできない。Angular2でフィルタとソート情報を送信する方法は?

データは次のとおりです。

{ 
    "event": { 
     "first": 0, 
     "rows": 10, 
     "sortField": "isDone", 
     "sortOrder": 1, 
     "filters": { 
      "title": { 
       "value": "a", 
       "matchMode": "startsWith" 
      }, 
      "details": { 
       "value": "d", 
       "matchMode": "startsWith" 
      } 
     } 
    } 
} 

HTTPサービスはGETとRequestBodyにデータを送信することはできません。私はhttp postでデータを送るのはREST標準に反していると思います。私が見つけた解決策は、データをURLに入れることですが、それは私の同僚には受け入れられず、httpポストで送信する方が良いと思います。

ベストプラクティスは何ですか?データをどのように送信すればよいですか? http投稿で送信するのは受け入れられますか?

答えて

3

例では、クエリ/フィルタのパラメータについて説明しています。これらをGETリクエストで送信するのは問題ありません。通常、REST APIを通じてリソースを取得しようとする場合、POSTではなくGETを使用します。

もちろん、APIがあなた自身を構築している場合は、POSTも選択できます。あなたがそれを行うならば、あなたは(セットの)フィルタを送ることができるいくつかのフィルタ/検索エンドポイントを作成します。これはしばしばより複雑な検索の場合に行われます。この場合は、基本的に検索/フィルタにリソースを設定します。したがって、/event/filterのようなエンドポイントを得ることができます。

別のオプションとして、共通検索の別名を追加してGETリクエストを使用することもできます。その後、エンドポイントは、この代わりのようにlookeできます。最後に

/event/doneEvents?title=a&details=d&top=10 

を、そこにこれを解決する方法は複数あり、かつPOSTは間違いなく、より複雑な検索のために許容可能です。 APIを構築する際に重要な部分は一貫しているため、他の複雑な検索でも選択肢があればそれに固執します。

あなたはこのような質問をした最初の人ではありません。これに関する詳細はhere (stackoverflow)here (software engineering stackexchange)またはhere (blog)です。

関連する問題