Post React Native axios始终返回';请求失败,状态代码为400';

Post React Native axios始终返回';请求失败,状态代码为400';,post,react-native,redux,request,axios,Post,React Native,Redux,Request,Axios,我正在尝试将我的react本机登录连接到后端。我使用axios ^0.16.2调用API,但它总是返回“错误:请求失败,状态代码400” 我所拥有的: export const login用户=({email,password})=>{ 返回(发送)=>{ 轴心柱http://localhost:8080/api/users/login', { 电子邮件, 密码 }, { 接受:'application/json', “内容类型”:“应用程序/json”, } ) 。然后(响应=>{ 控制台日志

我正在尝试将我的react本机登录连接到后端。我使用axios ^0.16.2调用API,但它总是返回“错误:请求失败,状态代码400” 我所拥有的:

export const login用户=({email,password})=>{
返回(发送)=>{
轴心柱http://localhost:8080/api/users/login',
{
电子邮件,
密码
},
{
接受:'application/json',
“内容类型”:“应用程序/json”,
}
)
。然后(响应=>{
控制台日志(响应);
派遣({
类型:登录用户,
有效载荷:response.data.status
});
动作。home();
})
.catch(错误=>{
console.log(错误);
派遣({
类型:登录用户,
有效载荷:错误
});
}
);
};
};
编辑: 非常确定请求主体是正确的,因为数据库包含所有正确的信息

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

@控制器
@RequestMapping(value=“api/users”,products={MediaType.APPLICATION\u JSON\u value})
公共类用户控制器{
/**
*让用户登录
*@param请求
*@返回
*@duserException
*@InvalidRequestException
*/
公共静态类UserLoginRequest实现ValiatedRequest{
私有字符串用户名;
私有整数gmtShift;
私人字符串电子邮件;
私有字符串密码;
@凌驾
public void validate()引发InvalidRequestException{
if(email==null | | email.isEmpty()){
抛出新的InvalidRequestException(“电子邮件为空”);
}
如果(gmtShift==null | | gmtShift<-12 | | gmtShift>+12){
抛出新的InvalidRequestException(“gmtShift为空或无效”);
}
if(username==null | | username.isEmpty()){
抛出新的InvalidRequestException(“用户名为空”);
}
if(password==null | | password.isEmpty()){
抛出新的InvalidRequestException(“密码为空”);
}
if(!RegexUtil.EMAIL.matcher(EMAIL.find()){
抛出新的InvalidRequestException(“电子邮件无效”);
}
if(password.length()>32){
抛出新的InvalidRequestException(“密码不能超过32个字符”);
}
}
公共字符串getUsername(){
返回用户名;
}
public void setUsername(字符串用户名){
this.username=用户名;
}
公共字符串getEmail(){
回复邮件;
}
公用电子邮件(字符串电子邮件){
this.email=电子邮件;
}
公共字符串getPassword(){
返回密码;
}
public void setPassword(字符串密码){
this.password=密码;
}
公共整数getGmtShift(){
返回GMT换档;
}
公共无效设置gmtShift(整数gmtShift){
this.gmtShift=gmtShift;
}
}
@RequestMapping(value=“login”,使用={MediaType.APPLICATION\u JSON\u value},method=RequestMethod.POST)
@应答器
公共响应登录用户(
@RequestBody UserLoginRequest请求)引发AuthenticationException,
无效请求异常{
request.validate();
userService.authenticate(RequestContextHolder.currentRequestAttributes().getSessionId(),
request.getGmtShift(),
request.getUsername(),
request.getEmail(),
request.getPassword());
返回新的响应(Status.Success);
}
}
}

可能是您发送请求的方式不正确。我也遇到了同样的错误,但我知道我是如何解决这个问题的。 我正在添加我的代码,希望这将帮助别人

axios.post('Api Url',
{
“firstName”:firstNameValue,
“lastName”:lastNameValue,
“stateId”:stateValue,
“电子邮件”:emailValue,
“密码”:passwordValue,
“deviceInfo”:deviceInfo
},{
“标题”:{
“内容类型”:“应用程序/json”,
}
})。然后((响应)=>{
log(“reactNativeDemo”,“response-get-details:”+response.data);
})
.catch((错误)=>{
log(“axios错误:”,错误);
});
我明白了

  • 导入
    qs.js
  • 使用此代码:
  • axios.post(Uri、Qs.stringify(数据))
    .then(函数(结果){})
    .catch(函数(错误){});
    
  • 因为您的API通过
    “@RequestBody”
    “@RequestParam”
    获得para
    可能与您的api有关。请从api中添加相关代码。您确定信息正确吗