I have a stage in AWS API Gateway that takes POST
requests. If I call this API Gateway with Postman, everything works as expected. I can see in CloudWatch logs, that the body of the POST is present. The body is as follows (shortened):
{
"Success": "1",
"Item": {
"IngameName": "SomeName",
"Timestamp": "Mon Oct 12 2020 19:07:29 GMT+0100 (British Summer Time)"
}
}
I also set a header for the content type in Postman: Content-Type : application/json
.
I try to make the same call again using fetch
in JavaScript:
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'
}
});
The fetch
call reaches API Gateway successfully, but CloudWatch logs say that the body is empty. I have also tried doing json.parse
instead of json.stringify
but this gives me Unexpected token
errors in the console. I saw some solutions including Accept:application/json
as a header, which I tried but does not fix the solution. I also tried the solution suggested here, but then I could not reach API Gateway at all.
I have double checked that apiGatewayAddressLocal
definitely contains a valid link, it is the same as I used in Postman
Why is my fetch
call not passing any body to API Gateway?