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

如何在JavaScript调用REST API时去除HTTP头,提取指定JSON内容

问题核心错误原因

  • fetch是异步API,返回值是Promise实例,不是接口返回的响应对象,你直接对smth执行delete操作完全不会生效
  • 你不需要手动处理响应头,浏览器原生的fetchAPI已经提供了直接提取响应体的方法,不需要手动剥离响应头内容

正确实现方案

你不需要手动处理响应头,直接通过响应对象的json()方法就可以拿到纯响应体的JSON解析结果,再提取你需要的字段转成字符串即可,完整代码如下:

const gemini = async () => {
    const burl = 'https://api.sandbox.gemini.com'
    const query = '/v1/pubticker/ethusd'
    const url = burl + query
    // 等待获取响应对象
    const response = await fetch(url)
    // 自动解析响应体为JSON对象,自动过滤所有响应头
    const resJson = await response.json()
    // 组装你需要的目标数据结构
    const target = {
        ...resJson.volume,
        last: resJson.last
    }
    // 转为JSON字符串可直接存入数据库
    return JSON.stringify(target)
}

export default gemini

上述代码返回的标准JSON字符串格式为:

{"ETH":"8232.886562","USD":"38693689.50955448","timestamp":1636394400000,"last":"4786.83"}

如果你确实需要你示例中给出的非标准格式(即volume对象后直接接逗号加last字段的格式),可以用字符串截取的方式实现,但稳定性远低于直接操作JSON对象:

const gemini = async () => {
    const burl = 'https://api.sandbox.gemini.com'
    const query = '/v1/pubticker/ethusd'
    const url = burl + query
    const response = await fetch(url)
    // 直接拿响应体原始字符串
    const rawText = await response.text()
    // 匹配截取你需要的内容
    const matchRes = rawText.match(/"volume":({.*}),"last":"([^"]+)"/)
    const targetStr = `${matchRes[1]},"last":"${matchRes[2]}"`
    return targetStr
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 11:15:07