1

現在、Atlassian Jira REST API を使用しようとしています。CORS エラーが発生しないようにするために、ブラウザからリクエストを送信せず、エクスプレス サーバー経由でプロキシするという推奨ルートを使用します。

これを行っている今、アプリで返されるのは保留中の約束だけです。ある時点で正しく解決していないと思いますが、どこにあるのかわかりません。

リクエストをプロキシに送信する 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);
};

Express サーバー上の Jira プロキシ エンドポイント

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 & handle Error メソッド:

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」メソッドのリターンとしてプロキシのレスポンスを返します。

エラー: エラーはスローされませんでしたが、ブラウザーで受信した応答は保留中の約束です。

4

1 に答える 1