当前位置: 首页 > 面试题库 >

Java何时使用@QueryParam和@PathParam

范浩宕
2023-03-14
问题内容

我不是在问这里已经问过的问题: @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) ;

与 /category/instance

@GET
@Path("/employee/{dept}/{id}")
Patient getEmployee(@PathParam("dept")Long dept, @PathParam("id")Long id) ;

与 ?category+instance

@GET
@Path("/employee")
Patient getEmployee(@QueryParam("dept")Long dept, @QueryParam("id")Long id) ;

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


问题答案:

REST可能不是一个标准,但是阅读一般的REST文档和博客文章应该为你提供一些指导,以指导你构建API URL。大多数其余的API往往在路径中只有资源名称和资源ID。如:

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

某些REST API使用查询字符串进行过滤,分页和排序,但是由于REST不是严格的标准,因此我建议你检查一些REST API,例如github和stackoverflow,并查看哪种适用于你的用例。

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



 类似资料:
  • 我不是在问这里已经问过的问题:@PathParam和@QueryParam之间有什么区别 这是一个“最佳做法”或惯例问题。 何时使用和。 我能想到的是,这个决定可能是利用这两者来区分信息模式。让我在下面举例说明我的LTPO-不够完美的观察。 PathParam的使用可以保留给information category,它很好地属于information Tree的一个分支。PathParam可用于向

  • 我一直在试图找到一个答案,如果在何时/何时不使用上面的向REST调用传递信息的方法方面有某种标准的话。 我到处都在找,但每一个帖子都只讨论列出的方法中的2种,或者3种,而不是全部4种之间的区别。

  • 我有资源类-UserResource接口,并定义了一个endpoint为GetUsers。 现在,我希望根据用户状态(活动、非活动)和它不是强制性的来过滤这些用户,所以如果我没有传递状态,它将获取所有用户。 2.第二种方法是从HttpServletRequest获取查询参数。因此,我已经获得了HttpServletRequest并从HttpServletRequest中获取查询参数。

  • 问题内容: 我试图过滤/修改Post和Put调用,以确保从HTML和JS代码中过滤出用户提供的所有参数,以防止XSS攻击。我想确保这是在API级别上实现的,因此无论使用什么客户端,它都将受到保护。 对于Jersey 1.x,可以通过实现ContainerRequestFilter并在将它们与请求的servlet匹配之前修改request.getQueryParameters()来实现。示例:htt

  • 问题内容: 我一直在nodejs中编程,研究了如何同时使用socket.io和对节点服务器的ajax调用。socket.io是否设计为替代ajax?我很好奇,在哪种情况下使用socket.io更好,而哪种ajax更好。感谢您的输入。 问题答案: 好吧,Web套接字(通过socket.io)提供的主要内容之一就是ajax缺乏的是服务器推送。因此,对于ajax,如果您想了解服务器上的新事件(例如,另一

  • 服务的Moxy版本的URL返回: MOXy和Jackson版本的Java代码是相同的这是beanparam: 问题似乎在于如何处理types参数。使用Jackson时,类型QueryParams被正确地封送到列表中,但MOXy失败,只返回一个NULL。因此getTypes返回一个空列表。正确处理了简单的QueryParam计数和lang。这是泽西的窃听器还是我需要和莫西做点别的什么? } web.