当我尝试连接到Spring MVC时axios出错400

时间:2017-08-17 16:44:44

标签: java spring spring-mvc axios

我想尝试在html中登录并使用axios将用户和密码发送到@RestController和@PostMapping,在这一刻,我得到了对服务器的响应,但问题是客户端的响应,因为当我尝试在日志中打印响应时,我得到错误400。

Axios公司:

var url = 'rest/loginParametros';
axios.post(url, {
    user: this.username,
    password: this.password
})
.then(function (response) {
    console.log(response);
 })
 .catch(function (error) {
    console.log(error);
 });

RequestMapping

@org.springframework.web.bind.annotation.RestController
@RequestMapping("/rest")
public class RestController {

private final Log log = LogFactory.getLog(RestController.class);

@PostMapping("/loginParametros")
public ResponseEntity<Boolean> loginParametros(@RequestParam(value = "user", required = true) String user, 
                    @RequestParam(value = "password", required = true) String password)
{
    log.info("user: " + user + " password: " + password);
    if(user.equals("hitzu") && password.equals("hitzu"))
        return new ResponseEntity<>(true, HttpStatus.OK);
    return new ResponseEntity<>(false, HttpStatus.OK);
}
}

此外,当使用postman消费restService时,我得到了响应

correct

1 个答案:

答案 0 :(得分:1)

您使用Axios发送的用户名/密码是请求有效负载的一部分(可以在Spring端使用@RequestBody访问)。

如果您想让代码正常工作,您必须将用户名/密码作为查询字符串传递。

var url = 'rest/loginParametros?user=' + this.username + '&password=' + this.password;

但出于安全考虑,我不建议使用此功能。

您应该将@RequestBodyUserInfo类一起使用,其中包含2个String字段(用户,密码),而不是@RequestParam