我的网络服务界面类似于
@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参数的数据?
答案 0 :(得分:1)
@FormParam
的Javadoc清楚了解参数的来源:
绑定请求中包含的表单参数的值 实体主体到资源方法参数。
观察到的行为似乎有三种可能性:
JAX-RS spec,第10.1章。解释了第三种可能性:
Servlet过滤器可能会通过访问触发请求体的消耗 请求参数。在servlet容器中@FormParam注释 application / x-www-form-urlencoded的标准实体提供者必须从servlet请求中获取它们的值 请求正文已被使用的参数。 Servlet API 不要区分URI和主体中的参数 请求,因此基于URI的查询参数可以包含在实体中 参数。