无法使用请求登录回送API

时间:2019-06-14 17:34:36

标签: javascript node.js ajax request loopback

我正在尝试使用标准POST login请求登录到在Web服务器上运行的回送API。但是,每次运行它,我都会得到:

  

{“错误”:{“状态代码”:400,“名称”:“错误”,“消息”:“需要用户名或电子邮件”,“代码”:“ USERNAME_EMAIL_REQUIRED”}}

我尝试了两种登录方式。首先:

var userDetails = {
  "email": "foo%40bar.com",
  "password": "test"
}
const requestOptions = {
  url: "APIURL/api/Users/login?email="+userDetails.email+"&password="+userDetails.password
};
request.post(requestOptions, function (error, response, body) {
  console.log(body);
});

并且:

var userDetails = {
  "email": "foo%40bar.com",
  "password": "test"
}
const requestOptions = {
  url: "https://temp-243314.appspot.com/api/Users/login",
  header: {
    "email": userDetails.email,
    "password": userDetails.password
  }
};
request.post(requestOptions, function (error, response, body) {
   console.log(body);
});

两者都返回相同的错误。

2 个答案:

答案 0 :(得分:1)

  1. 当在声明:/的结尾处看到;时,我喜欢它。您的var声明需要一个lil ;:D
  2. 我99%肯定他们会想要在体内。您在第二次尝试中显示的标头是非标准的,因此会将它们从大多数入站服务器中剥离(这对于大多数摄取服务器(如NGINX)是标准的)。如果他们想要自定义标头,他们可能会注意到,例如“ X -email”之类的东西。
  3. 如果您要以“ body”形式发送这些元素,则他们可能希望使用JSON格式,在这种情况下,您需要在request函数中指定json = true。
  4. 如果在正文中发送,请不要用%40进行网址编码来代替@ 5。
const request = require('request');
let options = {
  uri: 'APIURL/api/Users/login',
  method: 'POST',
  json: {
    "email":"foo@bar.com",
    "password":"¡¡¡¡¡¡¡¡UNHACKABLE!!!!!!!!!"
  }
};

request(options, function (err, resp, body) {
  let isHTTPSuccess;
  try {
    isHTTPSuccess = resp.statusCode + '';
    isHTTPSuccess = isHTTPSuccess[0];
    if (isHTTPSuccess === '2'){
      isHTTPSuccess = true;
    } else {
      isHTTPSuccess = false;
    }
  } catch(parseError){
    console.error(parseError);
    console.error(err);
    return;
  }
  if (err || !isHTTPSuccess){
    console.error(body);
    return;
  }

 console.log('WOWZER, THE CODE ABOVE IS A BIT MUCH NO? ANYWAY... HERE IS THE BODY: ', body);
 return;
});
  1. 祝你好运!

答案 1 :(得分:0)

您的请求应类似于:

var userDetails = {
  "email": "foo@bar.com",
  "password": "test"
}