带有错误queryparam的Java Rest Web服务

时间:2014-03-24 07:44:06

标签: java web-services rest

我有以下网络服务方法,

@GET
@Produces({ "application/xml", "application/json" })
@Path("/service/salesorder/{identifier}/{orderType}")
public Response readOrder(@PathParam("identifier") String identifier,
                          @PathParam("orderType") String orderType); 

如果用户调用下面正确的url,我希望服务工作正常,如果任何一个调用坏url(额外的查询参数),这是没有在方法中定义,我想抛出一些错误,我怎么能抓住所有不好的网址?

更正网址:http://myApp.com/service/salesorder/123/ShoppingOrder

错误的网址:http://myApp.com/service/salesorder/123/ShoppingOrder&badparam

2 个答案:

答案 0 :(得分:1)

Addionial你应该注入一个@Context方法参数:

public Response readOrder(@PathParam("identifier") String identifier,
                          @PathParam("orderType") String orderType,
                          @Context HttpServletRequest req); 

然后检查servlet API HttpServletRequest#getParameterNames()是否有任何查询参数。

答案 1 :(得分:0)

您可以使用不同的@PathParam值。

@Path("/service/salesorder/{identifier}/{orderType:[^&]*}")

这会导致404 Not Found /service/salesorder/service/salesorder/foo/bar&baz {orderType:[^&]*} ShoppingOrder&badparam {{1}}与{{1}}不匹配。