为了账号安全,请及时绑定邮箱和手机立即绑定

axios post 带有 firebase 云功能

axios post 带有 firebase 云功能

杨魅力 2023-08-10 15:31:12
我有基本的 firebase 云功能。我想用 Axios 发布请求(发送 Slack 消息)。但服务器返回“错误:无法处理请求(500)”。哪里有问题?我用的是corsconst 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',            },          },        ],      }    )  })})
查看完整描述

2 回答

?
子衿沉夜

TA贡献1828条经验 获得超3个赞

看来你使用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);

    }

  });

});


查看完整回答
反对 回复 2023-08-10
?
四季花海

TA贡献1811条经验 获得超5个赞

实现此目的的方法是将标题“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 的默认设置,因此这就是需要更改的原因。


希望这能帮您解决这个问题!


查看完整回答
反对 回复 2023-08-10
  • 2 回答
  • 0 关注
  • 86 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信