验证Web服务资源的路径

时间:2014-05-06 21:00:56

标签: java web-services rest jersey

我正在为多年前编写的Web服务编写一些单元测试。根类有一个类似的路径:

@Path("v1/path/")
public class RootResource {
   ...
}

类中的方法有各自的路径。一条工作路径是:

@GET
@Path("orders/{order_num}.xml")
@Produces(MediaType.APPLICATION_XML)
public Response getXML() {
    ...
}

这在root_path/v1/path/orders/123123.xml处理正常。

然而,还有另一种方法:

@POST
@Path("orders/{order_numer}/status.xml")
@Consumes(MediaType.APPLICATION_XML)
@Produces(MediaType.APPLICATION_XML)
public Response getStatusXML() {
  Logger.info(CALLER, "orderStatusXML", "XML Request received");
 ...
}

当我尝试在root_path/v1/path/orders/123423/status.xml访问此内容时,我得到404作为回报。日志中甚至缺少记录器的第一行。

我在Weblogic 12上,我们使用Jersey REST API来实现这些Web服务。

我已经尝试了很多方法来确保测试用例中列出的路径是正确的。关于如何检查正确路径的任何提示/想法?

1 个答案:

答案 0 :(得分:0)

root_path/v1/path/orders/123423/status.xml路径没有理由提供404,除非其他内容正在对该网址执行操作。

要尝试的事情:

  • 查看您的web.xml文件,查看Jersey处理的网址格式。该特定URL可能由其他一些servlet处理;
  • 再次查看web.xml并查看您是否any filters declared。过滤器拦截了什么URL以及过滤器对请求做了什么?
  • 情况可能并非如此,但无论如何我都会添加它...是#34; 404 - 未找到"你回来了,或者它实际上是" 405 - 方法不允许"那是退货?如果您尝试使用GET访问root_path/v1/path/orders/123423/status.xml网址,例如从浏览器访问,则会获得405,因为您的方法使用@POST进行了注释。你在使用POST吗?

我的赌注是过滤器!