1

我正在使用 Spring MVC 创建 RESTful 端点。我正在使用 spring-test-mvc 在单元/集成测试级别测试它们。我现在遇到了这个团队第一次尝试使用 DELETE 实现端点。这意味着需要设置容器以允许删除(PUT 将在不久之后出现)。我的研究把我带到了这里:

http://www.codereye.com/2010/12/configure-tomcat-to-accept-http-put.html

从技术上讲,我正在使用 JBoss,但我感觉 Tomcat 的文章就可以了。无论如何,我的问题不在容器级别。

我正在尝试创建一个单元测试来验证最基本的 404。假设您尝试删除调用 /users/{id} 的用户。我的测试通过了一个无效的 id,我希望返回 404。它给出了 405。当不支持 DELETE 时,这是有道理的。按照上面链接中的说明,我应该在 web.xml 中添加一些条目。我在主要和测试中这样做了。两者仍然给了我405。

我将如何设置 spring-test-mvc 以从 web.xml 或其他位置获取这些新的 http-method 类型?除了最初不支持 DELETE 之外,我的研究还没有提出任何建议。

谢谢达斯汀

4

1 回答 1

2

Spring-test-mvc 确实支持 DELETE(和 PUT),我已经将它与基于 DELETE 的方法一起使用,确实需要为 DELETE http 方法添加HiddenHttpMethodFilter过滤器才能在您的应用程序中工作,但是 spring-test-mvc 确实web.xml不看过滤器,它是从DispatcherServlet下开始工作的,这是对我有用的示例之一:

    mockMvc.perform(delete("/members/1").contentType(MediaType.APPLICATION_JSON))
        .andExpect(status().isOk());

我觉得您看到的错误可能与content-typeor更相关accept headers,这就是我看到返回 405 的地方,您可以将日志级别更改为调试或跟踪,看看还会出现什么。

于 2012-10-11T01:02:03.923 回答