axios post 带有 firebase 云功能

我有基本的 firebase 云功能。我想用 Axios 发布请求(发送 Slack 消息)。但服务器返回“错误:无法处理请求(500)”。哪里有问题?我用的是cors


const cors = require('cors') 

const functions = require('firebase-functions')

const Axios = require('axios')


exports.sendMessage = functions.https.onRequest((request, response) => {

  return cors()(request, response, () => {

    return Axios.post(

      `https://hooks.slack.com/services/*XXXXXXXXXXXXX*`,

      {

        blocks: [

          {

            type: 'section',

            text: {

              type: 'mrkdwn',

              text: 'hello',

            },

          },

        ],

      }

    )

  })

})


杨魅力
浏览 87回答 2
2回答

子衿沉夜

看来你使用cors方法不对。您还应该使用提供的返回任何值response。详细信息请查看下面。const cors = require('cors')({origin: true});exports.sendMessage = functions.https.onRequest((request, response) => {  return cors(request, response, async () => {    try {      const res = await Axios.post(        `https://hooks.slack.com/services/*XXXXXXXXXXXXX*`,        {          blocks: [            {              type: 'section',              text: {                type: 'mrkdwn',                text: 'hello',              },            },          ],        },      );      response.status(res.status).json(res.data);    } catch (error) {      response.status(400).json(error);    }  });});

四季花海

实现此目的的方法是将标题“Content-Type”:“application/x-www-form-urlencoded”添加到帖子中。您可以使用您提供的代码来执行此操作:const cors = require('cors') const functions = require('firebase-functions')const Axios = require('axios')exports.sendMessage = functions.https.onRequest((request, response) => {  return cors()(request, response, () => {    return Axios.post(      `https://hooks.slack.com/services/*XXXXXXXXXXXXX*`,      {        blocks: [          {            type: 'section',            text: {              type: 'mrkdwn',              text: 'hello',            },          },        ],      },      {        headers: {          "Content-Type": "application/x-www-form-urlencoded",        },      }    )  })})Slack API 似乎不能很好地处理常规 JSON,这是 Axios 的默认设置,因此这就是需要更改的原因。希望这能帮您解决这个问题!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript