19

QueryParam 和 PathParam 在使用方面有什么区别?

我知道可以使用它们两者将数据传递给服务。PathParam 是前面的数据吗?在 URL 和 QueryParam 中是 ? 之后的名称值数据。但我想知道这些究竟是如何使用的。

4

3 回答 3

55

@QueryParam用于访问 URL 的查询字符串中的键/值对(? 之后的部分)。例如在 urlhttp://example.com?q=searchterm中,您可以使用@QueryParam("q")来获取q.

@PathParam用于匹配URL的一部分作为参数。例如,在表单的 url 中http://example.com/books/{bookid},您可以使用它@PathParam("bookid")来获取一本书的 id。

有关JAX-RS 中使用的示例,请参阅此页面。

于 2012-05-02T14:45:00.390 回答
5

在实践中,这个问题可能没有一个正确的答案,因为在“野外”中使用了许多不同的 URL 方案。然而,查看它的一种有用方法是 REST URL 处理。在 REST(REpresentational State Transfer)中,其想法是能够唯一标识您想要提供访问权限的每个资源。在常见的 REST 方案中,可以将 URL 的路径部分视为 N 空间中的一组坐标(即 x, y, z => //myApp/x/y/z),查询参数为进一步的说明符。这些进一步的说明符可用作不完整路径说明的搜索条件,以返回匹配资源的列表。

有关 REST URL 的更多示例,请参阅以下问题

编辑: @marcok 有一个很好的技术答案,但是随着您更新的评论的曝光,您似乎对何时选择一个而不是另一个更感兴趣。通常,如果您要创建“纯”RESTful API,则作为路径一部分的任何内容都应通过其身份唯一标识资源。通常,这可能会使您的 URL 以 ID 值结尾,作为唯一标识资源的路径的一部分。

但是,如果您的 API 直接公开了按属性搜索/过滤的能力(可能不包括 ID),那么您更有可能将其编码为查询参数。

这些只是示例,对于一个好的 API 需要什么,更具体地说,一个 API 需要多么纯 RESTful,有不同的看法。

于 2013-04-23T22:06:00.093 回答
-1

@QueryParam:用于以键值对的形式获取参数,根据QueryParam中的key可以从URL中获取key的值。例如 example.com/id=searchParam

@QueryParam("id") 然后值将是 searchParam

@PathParam:用于从 URL 中获取参数(如果参数包含 URL)。例如 abc.com/searchParam/{empId}

@PathParam("empId")

于 2018-08-10T08:20:41.767 回答