Java RESTful服务 - QueryParam和PathParam在使用方面有什么区别?

时间:2012-05-02 14:26:02

标签: java rest

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

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

3 个答案:

答案 0 :(得分:47)

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

@PathParam用于将URL的一部分作为参数进行匹配。例如,在http://example.com/books/{bookid}形式的网址中,您可以使用@PathParam("bookid")来获取图书的ID。

有关JAX-RS中使用的示例,请参阅this page

答案 1 :(得分:4)

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

有关REST URL的更多示例,请参阅following question

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

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

这些只是示例,对于需要良好API的内容有不同的看法,更具体地说,API需要纯粹的RESTful。

答案 2 :(得分:0)

@QueryParam:用于获取参数作为键值对,并且基于QueryParam中的键可以从URL获取键的值。 例如。 example.com/id=searchParam

@QueryParam(“ id”),则值为searchParam

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

@PathParam(“ empId”)