You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JavaScript将API获取的数组数据POST发送到Webhook

解决方案

这个需求完全可以用JavaScript实现,你现有代码的问题主要集中在异步执行顺序和内容格式化两个部分,修改后的可用代码如下:

const api = "http://ip-api.com/json/"
// 存储拉取到的IP信息
const ipinfo = []

// 拉取IP信息的异步函数
async function getIP() {
  try {
    const response = await fetch(api)
    if (!response.ok) throw new Error('API请求失败')
    const data = await response.json();
    ipinfo.push(data);
    console.log('拉取到的IP信息:', ipinfo)
    // 拉取成功后自动调用发送webhook的函数
    await sendMessage()
  } catch (err) {
    console.error('拉取IP信息出错:', err)
  }
}

// 发送到Webhook的异步函数
async function sendMessage() {
  try {
    // 格式化要展示的IP信息,可根据需求自定义调整展示字段
    const formattedIPInfo = ipinfo.map(info => `
IP地址:${info.query}
国家:${info.country}(${info.countryCode})
地区:${info.regionName}
城市:${info.city}
邮编:${info.zip}
经纬度:${info.lat}, ${info.lon}
运营商:${info.org}
时区:${info.timezone}
    `).join('\n---\n')

    const response = await fetch('替换为你实际的WEBHOOK URL', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
        allowed_mentions: {
          parse: ['users', 'roles'],
        },
        embeds: [{
          title: 'New IP logged',
          description: formattedIPInfo,
        }],
      })
    })
    if (!response.ok) throw new Error('Webhook请求发送失败')
    console.log('Webhook发送成功')
  } catch (err) {
    console.error('发送Webhook出错:', err)
  }
}

// 启动拉取逻辑
getIP()

核心修改点说明

  • 修复异步执行顺序问题:原代码中getIP是异步请求,直接调用后还没等数据返回就执行sendMessage会拿到空数组,修改后拉取到数据再自动调用发送函数,确保数据正常传递。
  • 优化内容格式化逻辑:原代码直接拼接字符串和数组会输出ipinfo[object Object]这类无效内容,现在将数组里的IP信息按字段拆解格式化,展示更清晰,也可以自行调整展示的字段和排版。
  • 新增错误捕获逻辑:所有异步请求都加了异常捕获和状态判断,出现问题时可以直接在控制台查看报错原因,降低排查成本。
  • 统一异步函数写法:sendMessage也改为异步函数,后续如果需要添加发送成功/失败的后续处理逻辑更加方便。

内容的提问来源于stack exchange,提问作者Luis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 10:36:04