为了账号安全,请及时绑定邮箱和手机立即绑定

何时使用@QueryParam vs @PathParam

/ 猿问

何时使用@QueryParam vs @PathParam

春华秋衣 2019-09-18 13:42:31

我不是在问这里已经问过的问题: @PathParam和@QueryParam之间有什么区别


这是“最佳实践”或惯例问题。


当你使用@PathParamVS @QueryParam。


我能想到的是,决定可能是使用二者来区分信息模式。让我在下面说明我的LTPO - 不完美的观察。


PathParam的使用可以保留用于信息类别,这可以很好地落入信息树的分支中。PathParam可用于深入到实体类层次结构。


而QueryParam可以保留用于指定属性以定位类的实例。


例如,


/Vehicle/Car?registration=123

/House/Colonial?region=newengland

/category?instance


@GET

@Path("/employee/{dept}")

Patient getEmployee(@PathParam("dept")Long dept, @QueryParam("id")Long id) ;

VS /category/instance


@GET

@Path("/employee/{dept}/{id}")

Patient getEmployee(@PathParam("dept")Long dept, @PathParam("id")Long id) ;

VS ?category+instance


@GET

@Path("/employee")

Patient getEmployee(@QueryParam("dept")Long dept, @QueryParam("id")Long id) ;

我不认为有这样做的标准惯例。在那儿?但是,我想知道人们如何使用PathParam与QueryParam来区分他们的信息,就像上面举例说明的那样。我也很想听听练习背后的原因。


查看完整描述

3 回答

?
翻过高山走不出你

REST可能不是这样的标准,但阅读一般REST文档和博客文章应该为您提供一些构建API URL的好方法的指南。大多数rest API往往只在路径中包含资源名称和资源ID。如:


/departments/{dept}/employees/{id}

一些REST API使用查询字符串进行过滤,分页和排序,但由于REST不是严格的标准,我建议检查一些REST API,例如github和stackoverflow,看看哪种方法可以很好地用于您的用例。


我建议在路径中放置任何必需的参数,任何可选参数当然应该是查询字符串参数。在尝试编写匹配不同组合的URL处理程序时,将可选参数放在路径中会变得非常混乱。


查看完整回答
反对 回复 2019-09-18
?
红颜莎娜

这就是我的工作。


如果存在基于id检索记录的方案,例如,您需要获取id为15的员工的详细信息,那么您可以使用@PathParam获取资源。


GET /employee/{id}

如果您需要获取所有员工的详细信息,但一次只能获取10个,则可以使用查询参数


GET /employee?start=1&size=10

这表示启动员工ID 1获得10条记录。


总而言之,使用@PathParam进行基于id的检索。用户@QueryParam用于过滤器,或者如果您有任何用户可以传递的固定选项列表。




查看完整回答
反对 回复 2019-09-18
?
慕运维1137616

我认为如果参数标识特定实体,您应该使用路径变量。例如,要获取我要求的博客上的所有帖子


GET: myserver.com/myblog/posts

要获得id = 123的帖子,我会要求


GET: myserver.com/myblog/posts/123

但要过滤我的帖子列表,并获得自2013年1月1日以来的所有帖子,我会要求


GET: myserver.com/myblog/posts?since=2013-01-01

在第一个示例中,“posts”标识特定实体(整个博客帖子集合)。在第二个示例中,“123”也表示特定实体(单个博客帖子)。但在最后一个示例中,参数“since = 2013-01-01”是过滤帖子集合而不是特定实体的请求。分页和排序将是另一个很好的例子,即


GET: myserver.com/myblog/posts?page=2&order=backward

希望有所帮助。:-)


查看完整回答
反对 回复 2019-09-18

添加回答

回复

举报

0/150
提交
取消
意见反馈 邀请有奖 帮助中心 APP下载
官方微信