Запрос прокси API через Express возвращает ожидающий Promise вместо ответа - PullRequest
0 голосов
/ 17 января 2020

В настоящее время я пытаюсь работать с API отдыха Atlassian Jira. Чтобы не получить ошибку CORS I go по рекомендованному маршруту, не отправлять запрос из браузера, а прокси-сервер через мой express сервер.

Теперь, когда я делаю это, все, что я получаю обратно в приложении, это ожидающее обещание. Я предполагаю, что в какой-то момент я не решил ее правильно, но не могу понять где

Обработчик API, отправляющий запрос прокси:

const baseURL = `${apiConfig}/jiraproxy`;

export const testConnection = integration => {
  return fetch(`${baseURL}/get`, {
    method: "POST",
    headers: { "content-type": "application/json" },
    body: JSON.stringify(integration)
  })
    .then(handleResponse)
    .catch(handleError);
};

Конечная точка прокси-сервера Jira на Express сервере

const baseURL = `rest/api/3/dashboard`;

router.post("/get", (req, res) => {
  fetch(req.body.link + baseURL, {
    method: "GET",
    headers: { Accept: "application/json" },
    auth: {
      username: req.body.credentials.username,
      password: req.body.credentials.token
    }
  })
    .then(handleResponse)
    .catch(handleError);
});

handleResponse & методы обработки ошибок:

async function handleResponse(response) {
  if (response.ok) {
    return response.json();
  }
  if (response.status === 400) {
    const error = await response.text();
    throw new Error(error);
  }
  throw new Error("Network response was not ok.");
}

function handleError(error) {
  // eslint-disable-next-line no-console
  console.error(`API call failed. ${error}`);
  throw error;
}

Цель: Отправить запрос об отправке запроса на прокси и вернуть резонанс прокси как возвращение начального метода "testConction".

Ошибка: Ошибки не выданы, но ответ, полученный в браузере, является ожидающим обещанием.

1 Ответ

0 голосов
/ 17 января 2020

Перейдите на исправленный маршрутизатор Jira Proxy. Спасибо @ jfriend00.

router.post("/get", (req, res) => {
  return fetch(req.body.link + baseURL, {
    method: "GET",
    headers: { Accept: "application/json" },
    auth: {
      username: req.body.credentials.username,
      password: req.body.credentials.token
    }
  })
     // This is the part that changed
    .then(response => handleResponse(response))
    .then(jiraResponse => res.status(200).json(jiraResponse))
    .catch(handleError);
});
...