客户端(反应)不能访问从服务器响应(快递)

问题描述 投票:2回答:2

我工作的一个express.js服务器后的路线。我有一个验证的功能,如果不通过,返回一个400码的消息。客户端(反应),接收400码,但我不能访问由服务器发送的消息。

这是快递在帖子内:

const { error } = validate(req.body);
  if (error)
    return res
      .status(400)
      .send(error.details[0].message);

这是发生反应提交程序:

 doSubmit = async () => {   
    const { username, password } = this.state.data;
    const result = await login({ mail: username, password });
    console.log('result', result);
  };

登录只对axios.post方法的包装:

export async function login(user) {
  try {
    return await http.post(apiEndpoint, user);
  } catch (ex) {
    console.log(ex.message);
    return ex;
  }
}

目前,该代码的工作,因为它是。提交无效输入,诸如低于5个字符的密码时,得到在客户端执行以下操作:

POST http://localhost:3000/api/auth 400 (Bad Request)

Request failed with status code 400

result Error: Request failed with status code 400
    at createError (createError.js:17)
    at settle (settle.js:19)
    at XMLHttpRequest.handleLoad (xhr.js:78)
    at XMLHttpRequest.wrapped (raven.js:363)

但是,如果我改变了由服务器发送到“200”的状态代码,我得到:

结果{这里连同数据属性充分响应..数据:“”密码“的长度必须至少为5个字符长”}

我一直在阅读的Express文档。它并没有说明不发送响应什么,如果代码是400(虽然它是有道理的,如果没有什么错误请求发送)。我也玩弄了一下与“体分析器”,但没有得到不同的结果。

但是,如果我在邮差测试,它的工作原理就像一个魅力!与相同的输入,我得到的状态代码和消息。

最后,它的确定就可以同时验证输入发送(客户端)和接收的数据(服务器)吧?如果是这样,假设客户与输入OK,但服务器是不是。应在服务器响应与任何问题(我想要来实现),或简单地说“错误”(目前的情况)?

谢谢。

node.js express
2个回答
1
投票

爱可信的代码示例,可给予代码解决您的问题。问题是你的参数。

axios({
      url: '/login',
      method: 'post',
      params: { username: 'cedas', password: 'fredsed' }
    }).then(response => {
      resolve(response)
    })
      .catch(error => {
        reject(error)
      });
  })

0
投票

那么,到底,问题是访问ex.message,而不是ex.response ...干杯。

© www.soinside.com 2019 - 2024. All rights reserved.