反应 UI 与节点通信的问题



这是反应获取:

var json = {  json: JSON.stringify({  答:1,  乙: 2  }),  延迟:3  }; fetch('/saveInfo', {  方法:"发布",  标头:{  "接受": "应用程序/json, 文本/纯文本, */*",  "内容类型": "应用程序/json"  },  body: JSON.stringify(json.json)  })  .then(function (response) {  返回响应.json();  })  .then(function (result) {  警报(结果); console.log("文件已保存!  })  .catch (函数(错误){  console.log("请求失败");  });

这是节点:

<pre>
var express = require('express');
module.exports = function(app) {
var router = express.Router();
router.get('/', function (req, res) {
console.log('from node');
console.log(req);

res.json({status: 'UP'});
});
app.use("/saveInfo", router);
}
</pre>

上面的代码不适用于获取的第二个参数。

但是当我在没有第二个参数的情况下执行它时,如下所示:

fetch('/saveInfo')
.then(function (response) {
return response.json();
})
.then(function (result) {
alert(result);
console.log("The file was saved!");
})
.catch (function (error) {
console.log('Request failed');
});

工作正常,能够与节点程序通信。

任何人都可以帮助我解决这个问题吗?我想向节点程序发送反应的 UI 表单状态。

你也需要add a handler for the POST requests
在第一种情况下的 fetch 方法中,您已将方法类型指定为 POST,但节点对此没有任何处理。
但是,当您不给出第二个参数时,它被视为GET请求并被router.get拦截。
只需在节点中添加以下内容(在 app.use 行之前):

router.post("/", function (req, res) {
console.log('from node');
console.log(req);
res.json({status: 'UP'});
});

它将使节点能够侦听 POST 请求。

编辑:要访问 router.post 中的后请求正文参数,您需要body-parser包。在初始化高速路由器之前安装此软件包并添加以下两行:

app.use(bodyParser.json())  
app.use(bodyParser.urlencoded({ extended: false }))

阅读 http://jilles.me/express-routing-the-beginners-guide/以获取详细说明

最新更新