QueryParam和PathParam在使用方面有什么区别?
我知道数据可以使用它们传递给服务。 PathParam是前面的数据?在URL和QueryParam之后是?之后的名称值数据。但我想知道这些是如何使用的。
答案 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”)