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

使用node-fetch发起POST请求遇问题,Postman可正常调用

解决Node.js调用Sentiment140 API的问题

看起来你在Postman里能正常发起请求拿到结果,但用node-fetch实现时踩了坑,我帮你梳理下代码里的问题,再给你修正后的版本:

问题排查

你的代码里有几个关键错误,这也是用fetch调用JSON接口时的常见误区:

  • 请求体没转成JSON字符串:fetch的body参数如果传对象,服务端根本解析不了,必须用JSON.stringify()转成字符串格式
  • 缺少必要的请求头:得告诉服务端你发的是JSON数据,也就是设置Content-Type: application/json
  • 直接返回了Response对象:fetch返回的是一个Response实例,不是接口的真实响应数据,得调用.json()方法解析后才能拿到结果

修正后的完整代码

const fetch = require('node-fetch')
const SEN_URL = "http://www.sentiment140.com/api/bulkClassifyJson" 

app.get('/api/sentimenttest', async (req, res) => {
  try {
    // 配置请求参数,补全请求头并转换请求体格式
    const apiResponse = await fetch(SEN_URL, {
      method: "POST",
      headers: {
        "Content-Type": "application/json"
      },
      body: JSON.stringify({
        "data": [
          {"text": "I love you"}, 
          {"text": "I hate you"}
        ]
      })
    })
    
    // 解析响应为JSON格式
    const sentiments = await apiResponse.json()
    console.log("情感分析结果:", sentiments)
    // 用res.json()返回JSON响应,比res.send()更适配API场景
    res.json(sentiments)
  } catch (error) {
    // 别忘了捕获异常,给前端返回友好的错误信息
    console.error("调用情感分析API失败:", error)
    res.status(500).json({ error: "请求情感分析服务出错,请稍后重试" })
  }
})

额外小提示

  • 如果你还没装node-fetch,记得执行npm install node-fetch@2(v3版本是ESM模块,CommonJS环境下用v2更省心)
  • Postman里可以直接把成功的请求转成node-fetch代码:点击请求右上角的「Code」按钮,选择「Node.js - node-fetch」,就能直接拿到正确的代码模板,对比着改会更高效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:56:09