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

Ani*_*nil 16 java rest

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

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

mar*_*cok 48

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

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

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


Kev*_*ker 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,存在不同的意见。