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
。
我有一个 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
。