2011-01-20 9 views
1

私は、スコアを得るためにクエリの一部としてコースタイトルに入れることができるRESTサービスを持っていますが、 Calc 1,2、および3の微積分%など)。RESTクエリで始まるオプションを含む最良の方法

しかし、それに理にかなったオプションを与えるにはどうすればよいですか?

例えば、I持ちます。http:// localhost /をmyrest /任意の/すべての/微積分III最初の2つのパラメータは、学生のIDといくつかのグレードのカテゴリーである

私はのhttpたとは思わない:// localhost /をmyrest /任意の/すべての/含ま/微積分IIIを、私はを使用するように強制する必要がありますように良い使用であることがどのような彼らの場合に等しいです。探しています。

別のオプションはのhttpです:// localhost /をmyrest /任意の/すべての/微積分%またはます。http:// localhost /をmyrest /任意の/すべての/%のCalc%は別のオプションですが、あなたは削除されました許容文字としてを簡単に使用するオプション。

したがって、REST URLにフィルタリングオプションを追加するには、包含または開始を許可する方法(ユーザーにとって最も単純な/最も直感的な方法として定義されます)を選択する方法が最適です。

答えて

1

システムでは、次のクエリでグレードカテゴリのすべての科目がリストされますか?
http://localhost/myrest/any/any/

「はい」の場合は、厳密ではない件名をGETパラメータに抽出することを検討してください。このように、現在のロジックを壊すことなく、URL内のサブジェクトのフルネームを使用すると、そのサブジェクトのスコアが得られます。GETパラメータを使用して、同じグレードカテゴリ内のサブジェクトリストをフィルタリングすることもできます。例えば


http://localhost/myrest/any/any/?search=Calculus*

が...このような結果を提供できます。

<subjects> 
    <subject uri="/myrest/any/any/Calculus%20I">A</subject> 
    <subject uri="/myrest/any/any/Calculus%20II">B</subject> 
    <subject uri="/myrest/any/any/Calculus%20III">C</subject> 
</subjects> 
+0

を私は名前のパラメータすることを避けるためにしようとしています、そして「で始まるため、あなたの例では、良いかもしれ'に含まれているものは何もしません。私たちは18Kを超える異なるコースを持っていますが、これは難しさです。私は、 "?startswith = ..."や "?contains = ..."をしなければならないかもしれませんが、それは面倒です。 –

+0

@James:はい、私はstartswith/includes/etcを実装するのが面倒(URIやGETパラメータで行われているかどうかに関係なく)であることに同意します。上記で提案したのは、ワイルドカードをサポートする純粋な検索、つまりパラメータ名を意味していました。 '/ myrest/any/any'がデフォルトで主題のリストを与えるかどうかを私が最初に質問したのは、GETパラメータを使って結果セットをフィルタリング/スケールダウンするのは完全にRESTfulでなければならないからです。技術的には、google.com/search?q = lorem + ipsumでGoogleと同じことになります。 – MicE

+0

OK、今は理解しています。アプローチするとフィルタリングに役立つかもしれません。ありがとうございました。 –

関連する問題