2016-06-22 24 views
0

私はRESTfulなWebサービスを構築しています:REST APIでGETリクエストにフィルタ引数を渡すにはどうすればよいですか?

  • GET /clientsの下で、私はすべての既知のクライアントのリストを取得しています。 GET /clients/1の下
  • 、私はそれがあるべきようclientId 1.

すべてのクライアントオブジェクトを取得しています。

これらのクライアントにはauthorizedというプロパティがあります。これらを管理する私のWeb UI上で、私は認可されたクライアントと権限のないクライアントのためのテーブルを分離しています。もちろん、サーバーからすべてのクライアントをロードして、権限のないクライアントを表示するだけではありません。

問題は、RESTful URLでクライアントをフィルタするにはどうすればよいですか?適切なRESTful APIを実行したいので、クエリパラメータはオプションではありません。

私は既にGET /unauthorizedClientsGET /authorizedClientsを追加していると考えましたが、これは正しくないようです。DELETE/clients /%clientId% `を使用して1つのクライアントを削除します。

私はこの問題のための楽しいアプローチを考えることができませんでした。これがどのように解決できるかについてのヒントは大歓迎です。

答えて

0

/clients/unauthorized/clients/authorizedとします。あなたはディレクトリのようなテイラーのリソースURIが必要です。

このようにして、/client/[id]リソースに対してクライアントを削除することは何も問題ありません。

+0

はい、これはまさに探していたものです。 ありがとう! –

+0

@HerrDerb問題ありません、よろしくお願いします! –

+0

@HerrDerb 'clients'が' authorized'と 'unauthorized'の両方が異なる状態の単一のリソースであると考えられる場合、この答えは意味をなさないでしょう。クエリパラメータを使用する方がずっと優れています。 – Opal

1

何が原因でクエリパラメータが使用できなくなるのか不思議です。これらは、REST APIのリソースのコレクションをフィルタリングする最も適切な方法です。クエリパラメータを使用しても、APIはになりません。RESTful

次を持つことができます:

認定
  • GET /clients?status=authorized
  • 無断:GET /clients?status=unauthorized

別のオプションは次のとおりです。

認定
  • GET /clients/authorized
  • 無許可:GET /clients/unauthorized

本当にクエリパラメータを考慮する必要があります。

+1

ええ、クエリパラメータの+1! – Opal

関連する問題