Spring RESTful web-service returns 404 AFTER url 成功调用

Spring RESTful web-service returns 404 AFTER url is successfully called

我有一个 Spring MVC 4 应用程序 Spring Security 4 并部署在 Tomcat 8 运行 jdk 1.8 下。 Web 服务的控制器定义如下:

@RequestMapping(value = "/build", method = RequestMethod.POST, produces = "application/json", headers =
{ "Accept=*/*", "Content-Type=*/*" })
public SubjectEntity build(@RequestBody SubjectImportDTO subjectImportDTO)
{
    Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
    User user = null;
    if (principal instanceof User)
    {
        user = ((User) principal);
    }
    SubjectEntity entity = service.build(subjectImportDTO);
    System.out.println("FINISH: build");
    return entity;
}

我得到了一个 csrf 令牌,我的设置正确。我知道 url 被正确调用,因为我到达那里时可以在日志中看到它。后端的服务是运行,数据正确入库,我正确获取到write对象,使用Jackson Mapper,对象'SubjectEntity'应该翻译成JSON 并发送回请求客户端。此 Web 服务已在 Spring Web 测试框架下进行了单元测试,效果很好!

所以,我熟悉 HTTP 404 错误,当传入错误的参数时找不到 URL,或者当它是 GET 时你试图执行 POST,等等。导致我们出现 404 错误的原因有很多...

但是......在这种情况下......我们已经到达 URL,执行了代码,然后它就有了它需要的数据。由于控制器说我们有内容类型 / 并且它产生 application/json,我不知道还有什么问题?

有什么想法吗?

您应该将 @ResponseBody 添加到您的方法中。如果没有这个,Spring mvc 会尝试找到另一个可以发送响应的处理程序方法。

注意:@RestController 在控制器中的每个方法上自动添加 @ResponseBody