在POST webservice中作为表单数据访问的URL数据

时间:2015-09-24 13:17:26

标签: java web-services post jax-rs

我的网络服务界面类似于

@Consumes("application/x-www-form-urlencoded")
@POST
@Path("/testCall/{id}")
Object testCall(@PathParam("id") String myId, @FormParam("formId") String formId, @Context HttpServletRequest request);

现在我将webservice称为POST,其中包含来自REST客户端的以下URL

https://myTest.com/1.0/testCall/12345?formId=007

它工作正常。当我提到formId成为表格参数时,我无法理解为什么它接受来自URL参数的数据?

1 个答案:

答案 0 :(得分:1)

@FormParam的Javadoc清楚了解参数的来源:

  

绑定请求中包含的表单参数的值   实体主体到资源方法参数。

观察到的行为似乎有三种可能性:

  1. 请求内容还包含参数(不是您的情况)
  2. 实施有一个错误
  3. 请求内容已被过滤器消耗
  4. JAX-RS spec,第10.1章。解释了第三种可能性:

      

    Servlet过滤器可能会通过访问触发请求体的消耗   请求参数。在servlet容器中@FormParam注释   application / x-www-form-urlencoded的标准实体提供者必须从servlet请求中获取它们的值   请求正文已被使用的参数。 Servlet API   不要区分URI和主体中的参数   请求,因此基于URI的查询参数可以包含在实体中   参数。