關於restful 查詢API設計問題

bingyang發表於2014-06-28
[Rout("/user/find/{userId}"),"GET"]

[Rout("/user/find/{barthday}","GET")]

[Rout("/user/find/{loginId}"),"GET"]

[Rout("/user/find/{Addtime,endTime}"),"GET"]

[Rout("/user/......."),"POST"] //省略其他的
public class User
{
public int UserId{ge;set;}
public DateTime BarthDay{get;set;}
public string LoginId{get;set;}
public DateTime AddTime{get;set;}
}
這個對User資源設計是NET中的RSET風格,java中應該也有類似的模式,這裡且先不說這個資源是否設計的是否合理,我們把問題聚焦在“一個資源多條件查詢”場景下(所謂的Query filter),由於服務端對應User資源查詢就一個GET方法,比如:
public object Get(User request)
{
//TODO:完成查詢
}
,那麼如何來識別這些多條件查詢而組成對應的SQL語句呢?
if(....)
sql ="";
//或者是 return findByUserId(userId)
else
sql =""
//或者是 return findByLoginId(LoginId)
....
嗎?感覺很彆扭,且會出現很多分流的分支,而傳統的RPC介面對這些多條件查詢,會產生多個方法與之對應,比如, findByUserID...(userId),findByLoginId(loginId)這樣子,好不好不說,但至少語義很清楚。沒有分支條件。

那麼在RestFul 這個模式下,這中場景該如何設計?板橋大叔,指點啊

[該貼被bingyang於2014-06-28 15:27修改過]

[該貼被bingyang於2014-06-28 15:29修改過]

相關文章