Java RESTful服务 - QueryParam和PathParam在用法方面有什么区别?
QueryParam 和 PathParam 在用法方面有什么区别?
我知道可以使用它们两者将数据传递给服务。Path参数是数据之前吗?在 URL 和查询参数中,名称值数据位于 ?之后。但我想知道这些究竟是如何使用的。
QueryParam 和 PathParam 在用法方面有什么区别?
我知道可以使用它们两者将数据传递给服务。Path参数是数据之前吗?在 URL 和查询参数中,名称值数据位于 ?之后。但我想知道这些究竟是如何使用的。
@QueryParam
用于访问 URL 的查询字符串(?之后的部分)中的键/值对。例如,在 url 中,您可以使用 来获取 的值。http://example.com?q=searchterm
@QueryParam("q")
q
@PathParam
用于将 URL 的一部分作为参数进行匹配。例如,在表单的 URL 中,您可以使用 来获取一本书的 ID。http://example.com/books/{bookid}
@PathParam("bookid")
有关 JAX-RS 中使用的示例,请参阅此页面。
在实践中,这个问题可能没有一个正确的答案,因为在“野外”有很多不同的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,有不同的看法。