尝试将数据从angularjs发送到Spring MVC,但不断收到415错误
app.controller('RegisterFormSubmitCtrl', ['$scope', '$http', '$location', function($scope, $http) {
$scope.submit = function() {
var registerData = {
"email" : $scope.email,
"firstName" : $scope.firstName,
"lastName" : $scope.lastName,
"DoB": $scope.DoB = new Date(),
"password" : $scope.password
};
console.log(registerData);
$http({
method: 'POST',
url: "http://localhost:8080/home",
data: registerData,
headers: {
'Content-type': 'application/json, charset=UTF-8'
}
}).then(function successCallback(response) {
}, function errorCallback(response) {
});
}; }]);
弹簧MVC控制器
@Consumes("text/html")
@RequestMapping(value = "/home", method = RequestMethod.POST)
public ResponseEntity<Void> afterRegister(@RequestBody RegisterUserRequest request){
System.out.print("Register user: " + request.getFirstName());
if(userManager.emailRegistered(request.getEmail())){
return new ResponseEntity<>(HttpStatus.CONFLICT);
}
// checking with google datastore
else if(userManager.addUser(request.getEmail(), request.getPassword(), request.getFirstName(), request.getLastName(),
request.getDoB(), "User")) {
return new ResponseEntity<>(HttpStatus.CREATED);
}
return new ResponseEntity<>(HttpStatus.CONFLICT);
}
注册用户请求类
@Accessors(chain = true)
@Data
@NoArgsConstructor
@AllArgsConstructor
public class RegisterUserRequest {
@NotNull
private String email;
private String firstName;
private String lastName;
private Date DoB;
@NotNull
private String password;
}
错误:
Failed to load resource: the server responded with a status of 415 (Unsupported Media Type)
我尝试删除@RequestBody符号以消除错误,但是控制器仅从request
接收 null。还尝试在映射中添加produces='application/json'
,仍然收到错误415
在依赖项中,我添加了以下内容来读取 json:
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.6</version>
</dependency>
您的控制器afterRegister()
方法现在接受text/html
内容,即@Consumes("text/html")
,因此请将其更改为@Consumes("application/json")
尝试检查您的 Spring MVC 配置是否注册了 JSON 转换器通过我的另一个答案