【问题标题】:REST pass multiple inputs to GET methodREST 将多个输入传递给 GET 方法
【发布时间】:2010-03-31 11:48:45
【问题描述】:

我在 RAD 中部署了一个简单的基于 REST 的应用程序。

使用http://localhost/<contextroot>/users/<username> 访问一个简单的URL,其中<username> 使用reqeust.getAttributes() 访问。现在,我如何将多个属性传递给 REST 服务?

【问题讨论】:

    标签: rest


    【解决方案1】:

    通常你会使用查询参数:

    http://localhost/<contextroot>/users/<username>?a=10&b=hello
    

    您没有指明您使用的是哪种语言或框架,所以我无法告诉您如何在代码中执行此操作。

    【讨论】:

    • 另外,您可以使用 URI 路径,具体取决于参数的含义。如果您需要的不仅仅是查询参数,它可能应该是一个 POST 请求。
    • 感谢您的快速响应。我使用带有 RAD/Restlet 框架的 Java/J2EE。目的是进行搜索操作。允许进行“喜欢”搜索。查询参数需要传递“%”。
    • @Subramanian:“需要通过查询参数传递“%””。所以?您对查询参数进行编码以转义这样的特殊字符。搜索“编码查询参数”以获取示例。
    • 尽管我喜欢查询参数,但大多数 REST 实现不使用它们。
    • @ScottDavidTesler:我同意;查询参数对于 REST 语义是有问题的。但在这种情况下,我没有看到任何解决方法。 “干净”的解决方案是单独访问每个属性——…/&lt;username&gt;/a…/&lt;username&gt;/b,但这对于吞吐量、延迟和后端负载来说是一场噩梦。 HTTP keep-alives 可能会缓解前两个问题,但是,如果没有一些巧妙的延迟批处理,前端仍然会因为向后端发出多个单独的事务而变得笨拙。 REST 是一个伟大的范例,但恐怕它不是灵丹妙药。有时,它只是碍事。
    【解决方案2】:

    您也可以使用 http://localhost/&lt;contextroot&gt;/comments/&lt;username&gt;/after/&lt;date&gt; 样式的 URL,但如果您希望包含大量选项,这往往会变得混乱。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-13
      • 1970-01-01
      • 2017-02-06
      • 2016-07-16
      相关资源
      最近更新 更多