在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": "谜语"
}
]
}
}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值