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

如何区分GET与POST?Express中POST请求被识别为GET的解决方法

如何正确给你的Express API发起POST请求

嘿,这个问题我熟!你看到Cannot GET /api/1的错误,根本不是服务器把POST识别成了GET——而是你实际发出去的就是GET请求!毕竟你的Express路由只注册了POST方法的/api/1,所以用GET访问自然会报错。下面给你几种靠谱的正确发起POST请求的方式:

1. 用API调试工具(最直观)

比如Postman、Insomnia这类工具,操作起来很简单:

  • 新建一个请求,把默认的请求方法从GET改成POST
  • 输入目标URL:http://localhost:3000/api/1
  • 如果需要传参数,切换到Body标签,选raw然后格式选JSON,输入你的请求体内容,点发送就行

2. 用curl命令行(适合快速测试)

打开终端直接敲命令,明确指定POST方法:

# 不带请求体的简单POST请求
curl -X POST http://localhost:3000/api/1

# 带JSON请求体的POST请求
curl -X POST -H "Content-Type: application/json" -d '{"username": "test", "password": "123"}' http://localhost:3000/api/1

这里-X POST是关键,它强制指定了请求方法为POST,-H用来设置请求头,-d传递请求体数据。

3. 前端代码发起(比如用fetch)

如果是在网页里测试,可以写一段简单的JS代码:

fetch('http://localhost:3000/api/1', {
  method: 'POST', // 必须明确指定POST
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ data: '我是测试数据' }),
})
.then(response => response.text())
.then(result => console.log('请求结果:', result))
.catch(err => console.error('请求出错:', err));

这段代码里method: 'POST'是核心,确保请求方法不会默认用GET。

最后再确认下你的Express路由

顺便检查下服务器端的路由是不是正确注册了POST方法,比如:

// 正确的POST路由示例
app.post('/api/1', (req, res) => {
  res.send('POST请求成功接收!');
});

如果你的路由写的是app.get('/api/1', ...),那不管你发什么请求,只有GET能匹配到,这时候也会报错,所以要确保路由方法和请求方法对应上。

总结一下:核心就是确保你发起的请求方法确实是POST,别用默认的GET去访问POST路由。上面几种方法选一个适合你的就行,测试的时候多留意请求方法的设置~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:48:30