0

redux-api-middleware以下のような API 呼び出しを作成できます。

export function loadUsers() {
  return {
    [CALL_API]: {
      headers: { 'Content-Type': 'application/json' },
      endpoint: 'http://localhost:1337/users',
      method: 'GET',
      types: [LOAD_USERS_REQUEST, LOAD_USERS_SUCCESS, LOAD_USERS_FAILURE]
    }
  }
}

問題は、すべてのリクエストに対して、共通のエンド ポイント http://localhost:1337ヘッダー コンテンツ タイプ、および認証トークン の設定を使用していることです。

これらの設定をグローバルに設定する場所が必要です。公式ドキュメントから解決策を見つけることができません。誰もこれを知っていますか?またはこれを達成するためのアイデアはありますか?

前もって感謝します..

4

1 に答える 1

1

ミドルウェアでは、ストア状態へのアクセスを取得できるため、トークンやその他の認証情報をストアに入れ、ミドルウェアで使用できます。

私は同じ問題を抱えていて、次のような実装で終わっていました:

const callApiMiddleware = store => next => action => {
  // skip everything which is not API call
  const callAPI = action[CALL_API]
  if (typeof callAPI === 'undefined') {
    return next(action);
  }

  // the session info from store
  const session = store.getState().session;

  // perform request
  const {endpoint, headers, method} = callAPI;
  return fetch(endpoint, {
    headers: Object.assign({
        Authorization: `Bearer ${session && session.token}`
        // you can add more default headers there if you would like so
    }, headers),
    method
  });
};
于 2016-09-22T09:44:16.060 に答える