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

Node.js中如何设置Content-Type请求头?Express代码问题咨询

解决Express中JSON请求头设置与响应提示的问题

嘿,我来帮你搞定这两个问题!咱们一个一个来拆解:

1. 如何设置Content-Type: application/json请求头

根据你测试请求的工具不同,设置方式也不一样,给你几个常见场景的操作方法:

用curl命令测试

直接在终端运行以下命令,-H参数用来指定请求头:

curl -X POST http://localhost:3000/ -H "Content-Type: application/json" -d '{"key": "value"}'

用Postman测试

  1. 打开Postman,新建一个POST请求,地址填http://localhost:3000/
  2. 切换到Headers标签,在Key列输入Content-Type,Value列输入application/json
  3. 切换到Body标签,选择raw格式,下拉框选JSON,输入你的JSON内容后点击发送

用前端代码(fetch/axios)测试

fetch示例:

fetch('http://localhost:3000/', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({ key: 'value' })
})
.then(res => res.text())
.then(data => console.log(data));

axios示例:

axios.post('http://localhost:3000/', { key: 'value' }, {
  headers: {
    'Content-Type': 'application/json'
  }
})
.then(res => console.log(res.data));

2. 为什么没看到"Server requires application/json"提示?它在哪里?

你的代码逻辑是完全正确的:当请求的Content-Type不是application/json时,服务器会返回400 Bad Request状态码,同时把提示文本放在响应的body内容里。你没看到它,大概率是测试工具默认没展示响应体,或者你没留意查看位置。

举个实际例子:

  • 用curl不带请求头发请求:
curl -X POST http://localhost:3000/

你会直接在终端看到返回的文本:Server requires application/json

  • 用浏览器表单发POST请求(默认Content-Type是application/x-www-form-urlencoded),打开浏览器开发者工具(F12),切换到Network标签,找到这个POST请求,查看Response面板就能看到提示文本。

另外给你补个小细节:当前端发送JSON数据时,Express默认不会解析JSON请求体,你需要在代码里加一行app.use(express.json()),不然后续想获取请求里的JSON数据会拿不到。修改后的完整代码如下:

const express = require('express');
const app = express();

// 新增这行,让Express自动解析JSON请求体
app.use(express.json());

const requireJsonContent = () => {
  return (req, res, next) => {
    if (req.headers['content-type'] !== 'application/json') {
      res.status(400).send('Server requires application/json')
    } else {
      next()
    }
  }
}

app.get('/', (req, res, next) => {
  res.send('Welcome Home');
});

app.post('/', requireJsonContent(), (req, res, next) => {
  res.send('You sent JSON');
})

app.listen(3000, () => {
  console.log('Server running on port 3000');
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:29:03