【发布时间】:2018-07-03 11:23:34
【问题描述】:
我有一个 angular/spring boot webapp。当我发送创建用户后请求时,角度客户端应用程序无法读取我在操作后发回的响应实体的正文。错误是:
{error: SyntaxError: Unexpected token U in JSON at position 0 at JSON.parse (<anonymous>) at XMLHttp…, text: "User successfully created."}
我知道这是因为正文内容不是 JSON 格式。但即使我将produces = "application/json" 作为属性添加到@PostMapping 注释,错误仍然存在。
代码如下:
@RestController
@RequestMapping("api/user")
public class UserController {
private final Log logger = LogFactory.getLog(this.getClass());
@Autowired
UserService userService;
@Autowired
UserDao userDao;
@PostMapping(path = "/create", produces = "application/json")
private ResponseEntity<String> createNewUser(@RequestBody UserCreateDTO newUser) {
logger.info("name is: " + newUser.getUserName());
Status status = userService.createUser(newUser);
return ResponseEntity.status(status.isSuccess() ?
HttpStatus.CREATED : HttpStatus.BAD_REQUEST).body(status.getInfo());
}
我应该怎么做才能解决这个问题?我认为这与 ResponseEntity 的使用有关。我可以只发送我已经返回的状态 DTO 对象,但是我希望能够操作也被发送回来的 httpStatus 代码,所以这就是我想使用 ResponseEntity 的原因。
【问题讨论】:
-
当我查看 chrome 开发工具的响应部分时,我可以看到响应是纯 tekst 而不是 JSON。
标签: java spring spring-rest spring-web