Как отправить данные в Slack, используя NodeJs, используя axios? - PullRequest
0 голосов
/ 25 октября 2019

Я пытаюсь понять асинхронную функцию, чтобы преобразовать ее в синхронный тип для случая использования,
Функция делает запрос Post в Slack, используя модуль https узла,
Я хочу преобразовать этот код виспользуйте библиотеку axios.

Я не могу понять, что именно отправляет сообщение в конечную точку.

Код функции, как показано ниже -

function postToSlack(logTitle, logMessage, logType, context) {
    var payloadStr = JSON.stringify({
        'username': slackBotUsername,
        'attachments': [
            {
                'title': logTitle,
                'fallback': logMessage,
                'text': logMessage,
                'color': getLogTypeColour(logType)
            }
        ],
        'icon_emoji': slackBotIconEmoji,
    });

    var options = {
        hostname: 'hooks.slack.com',
        port: 443,
        path: slackPostPath,
        method: 'POST',
        headers: {
            'Content-Type': 'application/json',
            'Content-Length': Buffer.byteLength(payloadStr),
        }
    };

    var postReq = https.request(options, function(res) {
        var chunks = [];
        res.setEncoding('utf8');
        res.on('data', function(chunk) {
            return chunks.push(chunk);
        });
        res.on('end', function() {
            var body = chunks.join('');

            if (res.statusCode < 400) {
                console.info('Message posted successfully');
            } else if (res.statusCode < 500) {
                console.error("Error posting message to Slack API: " + res.statusCode + " - " + res.statusMessage);
            } else {
                console.error("Server error when processing message: " + res.statusCode + " - " + res.statusMessage);
            }

            if (completedRequests++ == totalRequests - 1) {
                context.succeed('DONE');
            }
        });
        return res;
    });

    postReq.write(payloadStr);
    postReq.end();
}

Я хочу знать, если
options - это необработанное тело сообщения запроса?,
или options просто используется для построения конечная точка и заголовки ?

Правильно ли я понимаю, что тела запроса Post нет,
, но только https endpoint и headers?

Ссылка -
https://flaviocopes.com/node-http-post/

1 Ответ

0 голосов
/ 25 октября 2019

payloadStr - это тело запроса, объект options задает такие вещи, как путь запроса и заголовки, большинство из которых будут автоматически установлены axios.

Вы должны быть в состоянии выполнить то же самое с помощью axios с чем-то вроде ...

function postToSlack(logTitle, logMessage, logType) {
  const payload = {
    username: slackBotUsername,
    attachments: [
      {
        title: logTitle,
        fallback: logMessage,
        text: logMessage,
        color: getLogTypeColour(logType)
      }
    ],
    icon_emoji: slackBotIconEmoji,
  };

  axios.post(slackPostPath, payload)
    .then((response) => {
      console.info(`Message posted successfully: ${response}`);
    })
    .catch((error) => {
      console.error(`Error posting message to Slack API: ${error}`);
    });
}
...