当前位置: 首页 > 知识库问答 >
问题:

何时使用@QueryParam与@PathParam

章青青
2023-03-14

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

这是一个“最佳做法”或惯例问题。

何时使用@PathParam@QueryParam

我能想到的是,这个决定可能是利用这两者来区分信息模式。让我在下面举例说明我的LTPO-不够完美的观察。

PathParam的使用可以保留给information category,它很好地属于information Tree的一个分支。PathParam可用于向下钻取实体类层次结构。

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

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

vs?类别+实例

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

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

共有1个答案

司空鸣
2023-03-14

REST本身可能不是一个标准,但是阅读一般的REST文档和博客文章应该会为您提供一些构造API URL的好方法的指导。大多数rest API倾向于在路径中只有资源名称和资源ID。例如:

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

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

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

 类似资料:
  • 问题内容: 我不是在问这里已经问过的问题: @PathParam和@QueryParam有什么区别 这是一个“最佳做法”或约定俗成的问题。 当你使用。 我能想到的决定可能是使用两者来区分信息模式。让我在下面说明我的LTPO-不够完美。 可以为信息类别保留PathParam的使用,它很好地属于信息树的一个分支。PathParam可用于向下钻取实体类层次结构。 而QueryParam可以保留用于指定属

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

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

  • 我目前正在将React应用程序迁移到Typescript。到目前为止,它工作得很好,但是我的函数的返回类型(分别是函数组件)有一个问题。 到目前为止,我一直使用作为返回类型,现在如果组件决定不呈现任何内容,也就是返回,这就不再起作用了,因为不是的有效值。这是我旅程的开始,因为现在我搜索了web并发现应该使用,其中还包括以及其他一些可能发生的事情。这似乎是更好的赌注。 、和有什么区别? 为什么类组件

  • 我一直在研究如何将Spring与REST结合使用的各种示例。我们的最终目标是Spring设置 我已经看到了两种不同的方法,用于在Spring中渲染REST > 在控制器中通过 通过存储库中的< code > @ RepositoryRestResource 我正在努力寻找的是,为什么你会使用一个而不是另一个。当尝试实施时,哪一个是最好的? 我们的数据库后端是Neo4j。

  • 我想了解更多这句话发现Grails留档: 如果测试涉及证明测试对象以特定方式与合作者交互,则使用模拟。如果协作者以某种方式的行为暴露了测试主题中的特定行为,那么该行为的结果就是您正在测试的,请使用存根