2017-10-16 4 views
0

J'essaie d'implémenter la création de client de repos personnalisée au-dessus de la récupération simple. Si la réponse 401-403 est reçue, elle doit "rediriger" l'application vers la page de connexion.authClient n'est pas appelé avec l'AUTH_ERROR

Selon la documentation, si l'erreur 401-403 est reçue, elle appelle magiquement authClient avec AUTH_ERROR, mais ce n'est pas le cas.

Quelqu'un peut-il expliquer, comment le connecter?

J'essaie d'appeler le client reste du composant: Il est simple reimplementation de

componentDidMount() { 
     restClient(CREATE, 'api/method', { 
    CurrentTime: new Date() 
      })   
      .then(o => 
     { 
    this.setState({ Msg: Object.values(o.data.ServerTime) }); 
      }); 

    } 

mise en œuvre de restclient 'simpleRestClient':

export const fetchJson = (url, options = {}) => { 

const requestHeaders = 
    options.headers || 
    new Headers({ 
     Accept: 'application/json', 
    }); 

if (
    !requestHeaders.has('Content-Type') && 
    !(options && options.body && options.body instanceof FormData) 
) { 
    requestHeaders.set('Content-Type', 'application/json'); 
} 
if (options.user && options.user.authenticated && options.user.token) { 
    requestHeaders.set('Authorization', options.user.token); 
} 

return fetch(url, { ...options, headers: requestHeaders }) 
    .then(response => 
     response.text().then(text => ({ 
      status: response.status, 
      statusText: response.statusText, 
      headers: response.headers, 
      body: text, 
     })) 
    ) 
    .then(({ status, statusText, headers, body }) => { 


     if (status < 200 || status >= 300) { 
      return Promise.reject(
       new HttpError(
        (json && json.message) || statusText, 
        status, 
        json 
       ) 
      ); 
     } 
     let json; 
     try { 
      json = JSON.parse(body); 
     } catch (e) { 
      // not json, no big deal 
     } 
     return { status, headers, body, json }; 
    }); 
}; 


const httpClient = (url, options = {}) => { 
    if (!options.headers) { 
     options.headers = new Headers({ Accept: 'application/json' }); 
    } 
    return fetchJson(url, options); 
} 
+0

Pouvez-vous partager le code de vos restClient et authClient? – Gildas

Répondre

0

Avez-vous essayé de rejeter la promesse d'un Error plutôt que un HttpError?