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

在中间件中可以获取到 store 状态的访问权限,因此可以将 token 和其他 auth 信息放入 store 中,然后在中间件中使用。

我有同样的问题,并以这样的实施结束:

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 回答