Json 成功调用url后,SpringRESTfulWeb服务返回404
我有一个带有SpringSecurity4的SpringMVC4应用程序,部署在JDK1.8下运行的Tomcat8上。web服务将控制器定义为:Json 成功调用url后,SpringRESTfulWeb服务返回404,json,spring,rest,spring-mvc,csrf,Json,Spring,Rest,Spring Mvc,Csrf,我有一个带有SpringSecurity4的SpringMVC4应用程序,部署在JDK1.8下运行的Tomcat8上。web服务将控制器定义为: @RequestMapping(value = "/build", method = RequestMethod.POST, produces = "application/json", headers = { "Accept=*/*", "Content-Type=*/*" }) public SubjectEntity build(@Request
@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映射器将对象“SubjectEntity”转换为JSON并发送回请求客户端。这个web服务已经在SpringWeb测试框架下进行了单元测试,效果非常好
所以,我很熟悉HTTP 404错误,当传入错误的参数时,找不到URL,或者当它是GET时,你试图做一篇文章,等等。为什么我们可以得到404错误的原因有很多
但是。。。在这种情况下。。。我们已经找到了URL,执行了代码,然后它就有了所需的数据。因为控制器说我们有content-type/并且它生成application/json,所以我不知道还有什么可能是错误的
有什么想法吗?您应该在方法中添加
@ResponseBody
。如果没有这一点,SpringMVC试图找到另一个可以发送响应的处理程序方法
注意:
@RestController
自动在控制器中的每个方法上添加@ResponseBody
。您的控制器是否用@controller
而不是@RestController
注释?我使用的是@controller…啊。。。我使用了'@Controller',但我忽略了在这个端点添加'@ResponseBody'。就这样。下一次,我将看一看“@RestController”甚至不熟悉这个。谢谢