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, Тип содержимого заголовка и токен авторизации.

Мне нужно место, чтобы установить эти настройки по всему миру, из их официальной документации не удается найти решение. Кто-нибудь это знает? или есть идея достичь этого?

Заранее спасибо ..

ответ

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 
    }); 
}; 
+0

, где я должен поставить этот код, в магазине конфигурации? –

+0

Я понял, это наше обычное промежуточное программное обеспечение, мы должны добавить этот магазин методом 'applyMiddleware'''? правильно? –

+0

Да, это обычное промежуточное программное обеспечение. Вы можете найти что-то подобное в примерах сокращения: https://github.com/reactjs/redux/blob/master/examples/real-world/src/middleware/api.js –