2016-11-15 4 views
1

J'utilise le code ci-dessous pour récupérer les données de l'API et cela fonctionne correctement. J'ai une autre API qui est sécurisée et qui nécessite un nom d'utilisateur/mot de passe pour accéder au contenu et je ne suis pas sûr de savoir comment transmettre les informations d'identification lors de l'utilisation du module isomorphic fetch. Quelqu'un peut-il aider?Récupération isomorphe (REDUX/nodeJs) - Demande POST avec nom d'utilisateur/mot de passe

J'utilise ce module: https://www.npmjs.com/package/isomorphic-fetch

Je dois passer le nom d'utilisateur et mot de passe ci-dessous (commande curl échantillon)

curl -u admin:hello123 http://test:8765/select?q=* 

code:

fetch(
    url 
).then(function (response) { 
    if (response.status != 200) { 
     dispatch(setError(response.status + '===>' + response.statusText + '===>' + response.url)) 
    } 
    return response.json(); 
}).then(function (json) { 
    dispatch(setData(json, q)) 
}).catch(function(err){ 
}); 

Répondre

1

La plupart des API seraient utilisées une requête POST pour l'authentification. Ils s'attendent également à recevoir les données à valider (utilisateur/mot de passe). En outre, ils nécessitent généralement des informations supplémentaires dans l'en-tête, comme pour spécifier le format (par exemple, application/json) des données (les données utilisateur/mot de passe) que vous envoyez. Vous ne passez pas ça. Vérifiez ci-dessous quelque chose qui pourrait fonctionner, mais tout dépend de ce que l'API que vous attendez (consultez sa documentation).

fetch(url, { 
    method: 'POST', 
    headers: { 
     // Check what headers the API needs. A couple of usuals right below 
     'Accept': 'application/json', 
     'Content-Type': 'application/json' 
    }, 
    body: JSON.stringify({ 
     // Validation data coming from a form usually 
     email: email, 
     password: password 
    } 
}).then(function (response) { 
    if (response.status != 200) { 
     dispatch(setError(response.status + '===>' + response.statusText + '===>' + response.url)) 
    } 
    return response.json(); 
}).then(function (json) { 
    dispatch(setData(json, q)) 
}).catch(function(err){ 
    console.log(err); 
};