【问题标题】:Java RESTful services - What is the difference between QueryParam and PathParam in terms of their usage?Java RESTful 服务 - QueryParam 和 PathParam 在使用方面有什么区别?
【发布时间】:2012-05-12 01:05:58
【问题描述】:

QueryParam 和 PathParam 在用法上有什么区别?

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

【问题讨论】:

  • 您的问题是更多关于 如何 每个被使用,还是你真的想问 何时(即,在什么情况下)你会编码作为路径的一部分与作为查询参数的一部分?
  • 凯文,我的意思是问我什么时候应该将某些东西编码为路径的一部分而不是作为查询参数?提前谢谢..
  • 我现在更想知道何时应该将某些内容编码为路径参数的一部分而不是查询参数。

标签: java rest


【解决方案1】:

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

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

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

【讨论】:

【解决方案2】:

在实践中,这个问题可能没有一个正确的答案,因为在“野外”中使用了许多不同的 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,存在不同的意见。

【讨论】:

    【解决方案3】:

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

    @QueryParam("id") 那么值就是 searchParam

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

    @PathParam("empId")

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-28
    • 2014-12-29
    • 2012-03-23
    • 1970-01-01
    • 2010-12-06
    • 2012-10-13
    相关资源
    最近更新 更多