我想尝试在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时,我得到了响应
答案 0 :(得分:1)
您使用Axios发送的用户名/密码是请求有效负载的一部分(可以在Spring端使用@RequestBody
访问)。
如果您想让代码正常工作,您必须将用户名/密码作为查询字符串传递。
var url = 'rest/loginParametros?user=' + this.username + '&password=' + this.password;
但出于安全考虑,我不建议使用此功能。
您应该将@RequestBody
与UserInfo
类一起使用,其中包含2个String
字段(用户,密码),而不是@RequestParam
。