मेरे पास एडब्ल्यूएस एपीआई गेटवे में एक चरण है जो POST अनुरोध लेता है। अगर मैं इस एपीआई गेटवे को डाकिया के साथ बुलाता हूं, तो सब कुछ उम्मीद के मुताबिक काम करता है। मैं CloudWatch लॉग में देख सकता हूं कि POST का मुख्य भाग मौजूद है। शरीर इस प्रकार है (छोटा):

{
    "Success": "1",
    "Item": {
        "IngameName": "SomeName",
        "Timestamp": "Mon Oct 12 2020 19:07:29 GMT+0100 (British Summer Time)"
    }
}

मैंने पोस्टमैन में सामग्री प्रकार के लिए एक हेडर भी सेट किया है: Content-Type : application/json

मैं जावास्क्रिप्ट में fetch का उपयोग करके फिर से वही कॉल करने का प्रयास करता हूं:

let testJson = {
    "Success": "1",
    "Item": {
        "IngameName": "SomeName",
        "Timestamp": "Mon Oct 12 2020 19:07:29 GMT+0100 (British Summer Time)"
    }
};
fetch(apiGatewayAddressLocal, {
    method: 'POST',
    body: JSON.stringify(testJson),
    headers: {
        'Content-Type': 'application/json'
    }
});

fetch कॉल सफलतापूर्वक API गेटवे पर पहुंच जाती है, लेकिन CloudWatch लॉग कहता है कि बॉडी खाली है। मैंने json.stringify के बजाय json.parse करने का भी प्रयास किया है, लेकिन इससे मुझे कंसोल में Unexpected token त्रुटियां मिलती हैं। मैंने हेडर के रूप में Accept:application/json सहित कुछ समाधान देखे, जिनकी मैंने कोशिश की लेकिन समाधान को ठीक नहीं किया। मैंने यहां सुझाए गए समाधान को भी आजमाया, लेकिन तब मैं API गेटवे तक बिल्कुल नहीं पहुंच सका।

मैंने दोबारा जांच की है कि apiGatewayAddressLocal में निश्चित रूप से एक वैध लिंक है, यह वैसा ही है जैसा मैंने पोस्टमैन में इस्तेमाल किया था

मेरी fetch कॉल API गेटवे को कोई बॉडी पास क्यों नहीं कर रही है?

0
August Williams 14 अक्टूबर 2020, 18:30

1 उत्तर

सबसे बढ़िया उत्तर

यह समस्या इसलिए हो रही थी क्योंकि fetch कमांड को async फ़ंक्शन के अंदर शामिल नहीं किया गया था, और fetch कमांड को await के साथ उपयोग करने की आवश्यकता थी। मैंने fetch ऑपरेशन के साथ no-cors मोड में भी जोड़ा।

async function someFunction(callback) {
    let testJson = {
        "Success": "1",
        "Item": {
            "IngameName": "SomeName",
            "Timestamp": "Mon Oct 12 2020 19:07:29 GMT+0100 (British Summer Time)"
        }
    };
    await fetch(apiGatewayAddressLocal, {
        method: 'POST',
        mode: 'no-cors',
        headers: {
            'Content-Type': 'application/json'
        },
        body: JSON.stringify(testJson)
    });
    callback();
}
0
August Williams 14 अक्टूबर 2020, 16:20