2012-01-24 4 views
5

RESTの高度なクエリメカニズムを作成しようとしています。私は次のことを仮定します:RESTでの高度なクエリ

GET /data/users 

そしてそれはユーザーのリストを返します。次に、ユーザーをフィルタするには、私が言うと思います例えば返さ:

GET /data/users?age=30 

を30歳のユーザーのリストを取得します。

GET /data/users?greaterThan(age)=30&lessThan(age)=40 

演算子:GreaterThanとlessThanは、などのフィールドを他の数値、日付の再利用可能な次のようになります。私が好きな40のような、本質的に再利用可能な演算子のセットを持っている - 今、私は30歳のユーザーが欲しいと言うことができます。これにより、他の演算子(contains、starts with、ends withなど)を追加することもできます。私はRESTのnoobだから、これがRESTの主な原則に違反しているかどうかはわかりません。何かご意見は?

+0

MS Dynamics 2011プラットフォームは、oDataインターフェイスと同様の機能を備えています。 http://msdn.microsoft.com/en-us/library/gg309461.aspx多分、これはあなたにいくつかの情報を与えるでしょう。 – user1231231412

+0

リンクのおかげで、マイクロソフトのような人がどのようにそれを実装したかを知るのに本当に役立ちます。 – NorthFork

+0

フィードバックをいただき、ありがとうございました。 – NorthFork

答えて

1

また、オプションのパラメータ「minAge」と「maxAge」を使用する方が簡単です。

2オルタナティブ:実行するためのテストを示すパラメータの値(複数可)をコード:不平等、パターンマッチングなど

これは関係なく、あなたが複雑なブール式のために何をすべきか厄介得ません。ある時点では、ほとんどの場合、クエリーの記述自体のための文書フォーマットを作りたいと思っていますが、これをもう "GET"と考えるのは難しいです。

1

私は事業者や

/data/users?age=[30,40] 

または

/data/users?age=>30&age=<40 

がそれになるだろう、値の範囲については、このような..何かのための構文が含まれるようにクエリパラメータの値を設定することになります少し読みやすく、予約文字を使用している場合はURLをエンコードするようにしてください

関連する問題