2

以下のコードを使用して API からデータを取得していますが、正常に動作します。セキュリティで保護された別の API があり、コンテンツにアクセスするにはユーザー名/パスワードが必要ですが、同形フェッチ モジュールを使用するときに資格情報を渡す方法がわかりません。誰か助けてくれませんか?

私はこのモジュールを使用しています: https://www.npmjs.com/package/isomorphic-fetch

以下のようにユーザー名とパスワードを渡す必要があります (サンプルの curl コマンド)

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

コード:

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){
});
4

1 に答える 1

3

ほとんどの API は、認証に POST 要求を使用します。また、検証するデータ (ユーザー/パスワード) を受け取ることも期待しています。また、通常、送信するデータ (ユーザー/パスワード データ) の形式 (アプリケーション/json など) を指定するなど、ヘッダーに追加情報が必要です。あなたはそれを通過していません。動作する可能性のあるものを以下で確認してください。ただし、それはすべて、ヒットしている API が期待しているものに依存します (ドキュメントを確認してください)。

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);
}; 
于 2016-11-28T06:27:07.050 に答える