我建立一個REST web服務,當然做了一些研究,但仍留有一些未解答的問題。我的服務將僅針對初學者返回JSON。參數等在我的REST服務
1.I已經從使用id = 54354用戶獲取姓名和年齡結算使用queryparameters我GET,像
/api/users/54354/?fields=name,age
。 似乎有什麼正在接受的大討論,但這似乎是一個平常的方式。對於我的POST,PUT I當然要使用它的參數。如果你認爲這種解決方式不同,你認爲這種做法有什麼看法,請爭辯。
2: 當使用GET(或POST和PUT對於這個問題)你會如何指定與運營商查詢,如"lastname starts with 'Pe'"
或"Age between 10 and 20"?
林考慮它是否將是有意義的把完整的查詢在某種類型的對象。例如。
api/users/?filter={'name':{'startsWith':'Pe'},'Age':{'Min':10},'Age':{'Max:'20}}
這種JSON的語法適用於queryies,但林不知道是否有另一種「最佳實踐」計算策略這個的。以上將需要服務中的解析器/驗證器來驗證有效的過濾器等。
3:最後一件事情是如何將AND和OR操作應用到它。 我想它也可以在JSON對象中工作。
一些希望你們可以給這個問題上的一些反饋:)
感謝您的回答。它是有道理的,但是如果我想要AND或或者不同的字段,如:startWithName = pe,foo,bar&age = 10-20,33,40-50。 &用於查詢字符串以分開。解決方案是將保留關鍵字和+定義爲OR和,例如;因爲它是&查詢=(startName:pe,foo,bar +年齡:20-30);性別:男性 – sunebrodersen 2012-01-30 20:31:35
'&'不是單純的分隔符,它是你的AND。您必須在布爾表達式(表達式計算爲true或false)中進行思考:field = value是一個表達式,(expr + expr)是一個OR表達式,(expr&expr)是一個AND表達式。括號可以讓你像想要的那樣複雜,例如'API /用戶?(nameStartsWith = PE&年齡= 20)+(染髮=黑色,綠色+自行車=真)。所以你不需要''''或':'。 – mtsz 2012-01-30 20:38:30
感謝您的澄清。我認爲,只要是我不能控制客戶的部分使用,我就會隨着這種進步而前進。 – sunebrodersen 2012-01-31 08:34:50