gpt4 book ai didi

post - React Native axios总是返回 'Request failed with status code 400'

转载 作者:行者123 更新时间:2023-12-02 20:39:45 28 4
gpt4 key购买 nike

我正在尝试将我的 react native 登录与后端连接起来。我使用 axios ^0.16.2 调用 API,但它总是返回“错误:请求失败,状态代码为 400”我有什么:

export const loginUser = ({ email, password }) => {
return (dispatch) => {
axios.post('http://localhost:8080/api/users/login',
{
email,
password
},
{
Accept: 'application/json',
'Content-Type': 'application/json',
}
)
.then(response => {
console.log(response);
dispatch({
type: LOGIN_USER,
payload: response.data.status
});
Actions.home();
})
.catch(error => {
console.log(error);
dispatch({
type: LOGIN_USER,
payload: error
});
}
);
};
};

编辑:非常确定请求正文是正确的,因为数据库具有所有正确的信息。

我在这里附上了我的API,我使用了Java Spring Boot:

@Controller
@RequestMapping(value = "api/users", produces = {MediaType.APPLICATION_JSON_VALUE})
public class UserController {
/**
* Log a user in
* @param request
* @return
* @throws DuplicatedUserException
* @throws InvalidRequestException
*/
public static class UserLoginRequest implements ValiatedRequest {

private String username;
private Integer gmtShift;
private String email;
private String password;

@Override
public void validate() throws InvalidRequestException {
if (email == null || email.isEmpty()) {
throw new InvalidRequestException("email is empty.");
}
if (gmtShift == null || gmtShift < -12 || gmtShift > +12) {
throw new InvalidRequestException("gmtShift is empty or invalid.");
}
if (username == null || username.isEmpty()) {
throw new InvalidRequestException("user name is empty.");
}
if (password == null || password.isEmpty()) {
throw new InvalidRequestException("password is empty.");
}
if (!RegexUtil.EMAIL.matcher(email).find()) {
throw new InvalidRequestException("email is invalid.");
}
if (password.length() > 32) {
throw new InvalidRequestException("password cannot be longer than 32 characters.");
}
}

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public String getEmail() {
return email;
}

public void setEmail(String email) {
this.email = email;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

public Integer getGmtShift() {
return gmtShift;
}

public void setGmtShift(Integer gmtShift) {
this.gmtShift = gmtShift;
}
}

@RequestMapping(value = "login", consumes = {MediaType.APPLICATION_JSON_VALUE}, method = RequestMethod.POST)
@ResponseBody
public Response loginUser(
@RequestBody UserLoginRequest request) throws AuthenticationException,
InvalidRequestException {
request.validate();
userService.authenticate(RequestContextHolder.currentRequestAttributes().getSessionId(),
request.getGmtShift(),
request.getUsername(),
request.getEmail(),
request.getPassword());
return new Response(Status.Success);
}
}
}

最佳答案

您可能没有以正确的方式发送请求。我也遇到了同样的错误,但我设法解决了这个问题。我正在添加我的代码,希望这会对某人有所帮助。

axios.post('Api Url',
{
'firstName': firstNameValue,
'lastName': lastNameValue,
'stateId': stateValue,
'email': emailValue,
'password': passwordValue,
'deviceInfo': deviceInfo
},{
"headers": {
'Content-Type': 'application/json',
}
}).then((response) => {
console.log("reactNativeDemo","response get details:"+response.data);
})
.catch((error) => {
console.log("axios error:",error);
});

关于post - React Native axios总是返回 'Request failed with status code 400',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46248255/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com