POST发送SigFox DEVKIT温度至Node.js服务器时出现Cannot GET /sigfox错误
问题描述
我尝试通过POST方法将SigFox DEVKIT的温度数据发送至Node.js服务器,但直接通过浏览器访问服务器的/sigfox端点时出现Cannot GET /sigfox错误。不过SigFox后台的回调记录显示数据已成功发送,且本地运行的服务器与线上托管的服务器均出现该问题。
排查分析
- 触发
Cannot GET /sigfox的核心原因:浏览器地址栏访问默认发送GET请求,但你的Node.js服务器仅为/sigfox端点配置了POST请求的处理逻辑,未处理GET请求,因此返回该错误。而SigFox后台是按配置的POST方法发送数据,所以回调显示发送成功。 - 需额外确认的细节:
- 服务器代码中是否仅用
app.post('/sigfox', ...)注册路由,未添加app.get('/sigfox', ...) - SigFox回调的请求方法是否确实设置为POST,且请求格式(如JSON/表单)与服务器的解析中间件匹配
- 服务器代码中是否仅用
解决方案
- 添加GET路由用于测试(可选)
如果需要通过浏览器快速验证端点是否存活,在服务器代码中补充GET路由处理:
// 保留原有的POST路由逻辑 app.post('/sigfox', (req, res) => { console.log('Received SigFox data:', req.body); res.status(200).send('Data received'); }); // 添加GET路由用于浏览器访问测试 app.get('/sigfox', (req, res) => { res.status(200).send('Sigfox endpoint is active. Send POST data to this URL.'); });
- 确保服务器正确解析POST数据
如果SigFox发送的数据未被服务器正确接收,需确认已添加必要的解析中间件:
const express = require('express'); const app = express(); // 解析JSON格式的POST数据(适配SigFox的JSON回调格式) app.use(express.json()); // 解析表单格式的POST数据(若SigFox用表单格式发送) app.use(express.urlencoded({ extended: true })); // 你的POST路由 app.post('/sigfox', (req, res) => { // 处理数据逻辑,比如存储到数据库 res.sendStatus(200); }); app.listen(process.env.PORT || 3000, () => { console.log('Server running'); });
- 验证SigFox数据是否真的到达服务器
在POST路由中添加日志输出,查看服务器控制台是否有SigFox发送的打印信息。如果没有:
- 检查SigFox回调的URL是否包含正确的域名/IP、端口(托管服务器需确保端口对外放行)
- 确认SigFox回调的请求头、参数格式与服务器解析逻辑匹配
附相关信息
SigFox回调结果:[此处粘贴回调的具体返回内容,如状态码200、响应信息等]
SigFox设置截图:
Node.js服务器代码:
// 粘贴你的完整服务器代码
内容的提问来源于stack exchange,提问作者William R. Vazquez
相关产品推荐
相关产品推荐

