Не удается войти в loopback API с помощью запроса - PullRequest
0 голосов
/ 14 июня 2019

Я пытаюсь войти в петлевой API, который я запускаю на веб-сервере, используя стандартный запрос POST login. Однако каждый раз, когда я запускаю его, я получаю:

{"error": {"statusCode": 400, "name": "Error", "message": "требуется имя пользователя или адрес электронной почты", "code": "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 ]

1 голос
/ 16 июня 2019
  1. Мне нравится, когда я вижу ; в конце объявлений: /. ваши var декларации нуждаются в lil ;: D
  2. Я на 99% уверен, что они захотят этого в теле. Заголовки, которые вы показываете во второй попытке, являются нестандартными, поэтому они будут удалены с большинства входящих серверов (как это стандартно для большинства входящих серверов, таких как NGINX). Если бы они хотели использовать собственный заголовок, они, вероятно, отметили бы его как «X электронная почта "или что-то странное.
  3. Если вы собираетесь отправлять эти элементы в "теле", они, вероятно, хотят, чтобы они были в формате JSON, и в этом случае вам нужно указать json = true в функции запроса.
  4. Если отправлено в теле, не кодируйте URL с %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. Удачи!
0 голосов
/ 16 июня 2019

Ваш запрос должен быть таким:

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