在RESTFUL風格中怎樣定義需要多個參數才能確定的資源路徑

在RESTFUL風格中怎樣定義需要多個參數才能確定的資源路徑

有些資源只需要一個參數就能定位出來比如xxx.com/user/2就定位了id號爲2的用戶,但是有些資源需要兩個或者兩個以上的參數才能定位,該如何組織這種資源的URL比較好?
比如要表示x軸爲2,y軸爲3的點該用下列哪種URL比較好?
1. xxx.com/dot/2/3
2. xxx.com/dot?x=2&y=3
3. xxx.com/dot/2-3(or 2.3)
或者還有別的更好的方案?求指教

3 個回答

5
採納
spacewander 3k 2014年12月25日 回答

可以參照Rails中的標準的定義方式。
如果定義這個資源的兩個參數具有從屬關係,那麼生成的路由就是

owner/1/property/1

其中property從屬於owner。

比如用戶1的編號爲2的文章,就是users/1/articles/2

如果兩個資源是平等的,那麼一般是作爲路由中HTTP方法的參數,

比如你提到的“要表示x軸爲2,y軸爲3的點”,就一般是用xxx.com/dot?x=2&y=3

0
XFHNever 764 2014年12月25日 回答

個人認爲2更好。

restful 的url表示資源的邏輯地址,每個網址代表一種資源(resource)。x軸爲2,y軸爲3的點可以理解成對點的過濾,x=2和y=2都是過濾條件。

以上是個人觀點,歡迎指正~

對於restful的理解及api設計可以參考 阮一峯 大神的blog:

http://www.ruanyifeng.com/blog/2011/09/restful.html
http://www.ruanyifeng.com/blog/2014/05/restful_api.html

-1
球場詩人 -1 1月26日 回答

@Controller
@RequestMapping("/second")
public class SController {

//如果有多個請求參數時,只需要中間用"/"分開就好,但是此時web.xml中需要配置/

@RequestMapping("/answer/{id}/{key}")

public String answer(@PathVariable("id")String id,@PathVariable("key")String key,HttpServletRequest request,HttpServletResponse response,Model model) throws Exception{
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");

if(key == null || !key.trim().matches("[a-z0-9]{32}")){
return "errorkey";
}
if(id==null||"".equals(id)){
return "errorURI";
}

return "OK";

}

}

最終請求地址是://http://localhost:8080/funny/second/answer/109885/f23c92defda04fa97807d7a60c0a56e5

返回結果:
{
"error_code": 0,
"reason": "Success",
"result": {
"data": [
{
"id": 109885,
"body": "卻上心頭。",
"valid": 0,
"title": "已有推辭之意(打一瓊瑤作品)",
"cname": "謎語"
}
]
}
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章