@megamutex

Почему не выполняется POST node.js?

Добрый день!
Есть небольшое тестовое приложение на node.js с фреймоврком express.js.
Пытаюсь потестировать API Amazon Moments https://developer.amazon.com/docs/moments/rewards-...
При попытке сделать POST запрос, получаю в ответ вот это:
5cbeff34d591f580090997.png
Стартовый index.js:
var express = require('express');
var amaz = require('./amazon.js');
var app = express();
var PORT = process.env.PORT || 80;

app.use(express.static(__dirname + "/public"));

app.get('/', function (req, res) {
  res.send('Hello World!');
});

app.listen(PORT,function(){
  console.log('server successfully started on port ' + PORT);
  amaz;
});


amazon.js:
const https = require('http')

const data = JSON.stringify({
  "x-api-key": "12345",
  "Content-Type": "application/json",
  "appId": "DEMO1",
  "momentId": "GAME_COMPLETE",
  "deviceType": 'Android ',
  'campaignId ': "DEMOCAMP1",
  "rewardGroupId": "amz1yprime"
})

const options = {
  url: 'https://dnxr7vm27d.execute-api.us-east-1.amazonaws.com/prod/GetRewardInfo',
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'x-api-key': 'kE2xi2OgUa7jfijmsd0jQ74aJntJwUEW2EU8LUsi'
  }
}

const req = https.request(options, (res) => {
  console.log(`statusCode: ${res.statusCode}`)

  module.exports = res.on('data', (d) => {
    console.log(d);
  })
})

req.on('error', (error) => {
  console.error(error.message)
})

req.write(data)
req.end()


Подскажите пожалуйста, что делаю не так?
  • Вопрос задан
  • 138 просмотров
Решения вопроса 1
@megamutex Автор вопроса
Решил переделать код под модуль Request, не используя модуль Http:

const request = require('request')

var options = {
  url: 'https://dnxr7vm27d.execute-api.us-east-1.amazonaws.com/prod/GetRewardInfo',
  method: 'POST',
  headers: {
    'Content-Type': 'application/json; charset=UTF-8',
    'x-api-key': 'kE2xi2OgUa7jfijmsd0jQ74aJntJwUEW2EU8LUsi'
  },
  body: {
    'appId': 'DEMO1',
    'momentId':'GAME_COMPLETE',
    'deviceType' : 'Android',
    'campaignId' : 'DEMOCAMP1',
    'rewardGroupId': 'amz1yprime'
  },
  json: true // sets body to JSON representation of value 
};

request.post(options, (err, httpResponse, body) => {
  if (err) console.error(err);
  // httpResponse contains the full response object, httpResponse.statusCode etc
  else console.log(body);
})

Все заработало, как нужно
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы