0

私は RESTful API を設計しており、リソースを照会するときに OR 演算子を使用して述語を表現する方法を考え出そうとしています。

たとえば、プロパティ Name を持つリソース Foo がある場合、「Name1」または「Name2」に一致する名前を持つすべての Foo リソースをどのように検索しますか?

次のように AND 演算子を使用すると、これは簡単です: http://www.website.com/Foo?Name=Name1&Age=19

私が見た他のアプローチは、本文に検索を投稿することです。

4

2 に答える 2

1

独自のアプローチを選択する必要がありますが、非常に論理的と思われるものをいくつか挙げることができます (ただし、欠点がないわけではありません)。

オプション 1.:|演算子の使用:

http://www.website.com/Foo?Name=Name1|Name2

オプション 2.: 変更されたクエリ パラメータを使用して、セットからの値の 1 つによる選択を許可します (可能なカンマ区切り値のリスト):

http://www.website.com/Foo?Name_in=Name1,Name2

オプション 3.: PHP のような表記法を使用して、単一の文字列の代わりにリストを提供する:

http://www.website.com/Foo?Name[]=Name1&Name[]=Name2

上記のすべてのオプションには、1 つの大きな利点があります。それは、他のクエリ パラメータに干渉しないことです。

ただし、前述したように、独自のアプローチを選択し、API 全体で一貫性を保つようにしてください。

于 2012-11-24T09:30:31.947 に答える
0

これを修正する簡単な方法の1つは、パラメータがandまたはorであるかどうかに関係なく、パラメータ間の関係を識別するパラメータを追加することです。たとえば、次のようになります。

http://www.website.com/Foo?Name=Name1&Age=19&or=true

または、はるかに複雑なクエリの場合は、単一のパラメータを保持し、独自の小さなクエリ言語を作成してクエリ全体を含め、サーバー側で文字列全体を解析して情報とステートメントを抽出します。

于 2012-11-24T09:21:42.343 に答える