2011-01-20 14 views
1

我有一個REST服務,它允許人們將課程標題作爲查詢的一部分來獲取分數,但有時他們可能想要獲得一個組,如計算Calculus%爲Calc 1,2和3.提供開始選項或包含在REST查詢中的最佳方式

但是,給他們一個有意義的選項的最佳方法是什麼?

例如,我有的http://本地主機/ myrest /任何/所有/積分III

其中前兩個參數是學生證和一些等級類別。

我不認爲有的http://本地主機/ myrest /任何/所有/包含/積分III是一款很好用的話,我需要強制他們使用等於如果這是他們正在找。

另一種選擇是的http://本地主機/ myrest /任何/所有/演算%的http://本地主機/ myrest /任何/所有/%計算器%是另一種選擇,但你已刪除可以輕鬆使用作爲允許的字符。

因此,要在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/contains/etc會很麻煩(不管它是在URI中還是作爲GET參數完成)。我上面提出的意思是作爲支持通配符的純搜索,因此是參數名稱。之所以我第一次詢問'/ myrest/any/any'是否默認給你一個主題列表,是因爲如果它是,那麼它應該是完美的RESTful,通過GET參數過濾/縮小結果集。從技術上來說,它與谷歌對google.com/search?q = lorem + ipsum的做法是一樣的。 – MicE

+0

好的,現在我更好理解了,你的方法可能對過濾有用。謝謝。 –

相關問題