【发布时间】:2017-12-02 02:28:41
【问题描述】:
我有以下设置: 1) NodeJs 服务器 2) 外部应用
我想接收来自外部应用程序的 POST 请求,并将 POST 请求的正文发送到网页以进行可视化。
到目前为止,我可以成功接收 POST 请求并在服务器控制台中打印它。 我正在使用 express 和 body-parser 来处理服务器和消息正文。
代码如下:
var express = require("express");
var myParser = require("body-parser");
var app = express();
app.use(myParser.json({extended : true}));
app.post("/", function(request, response) {
console.log(request.body);
});
app.listen(3000);
在 POST 事件中,我只打印正文消息。我什至没有发回响应,因为我知道它对外部应用程序没有用。 现在,对于第二部分,网页上的可视化,我需要在我的应用程序中添加一个“get”事件,由连接到服务器的浏览器提供。
所以我修改了服务器代码如下:
var express = require("express");
var myParser = require("body-parser");
var app = express();
app.use(myParser.json({extended : true}));
app.post("/", function(request, response) {
console.log(request.body);
app.get("/index.html",function(req,res){
res.end(request.body);});
});
app.listen(3000);
在服务器启动时,我没有收到任何错误,但是如果我在 index.html 资源上打开浏览器,我会收到以下错误:
TypeError: 第一个参数必须是字符串或缓冲区 在 ServerResponse.end (_http_outgoing.js:742:13)
在 /usr/share/myapp.js:10:5
在 Layer.handle [as handle_request] (/usr/share/myapp/node_modules/express/lib/router/layer.js:95:5)
在下一个(/usr/share/myapp/node_modules/express/lib/router/route.js:137:13)
在 Route.dispatch (/usr/share/myapp/node_modules/express/lib/router/route.js:112:3)
在 Layer.handle [as handle_request] (/usr/share/myapp/node_modules/express/lib/router/layer.js:95:5)
在 /usr/share/myapp/node_modules/express/lib/router/index.js:281:22
在 Function.process_params (/usr/share/myapp/node_modules/express/lib/router/index.js:335:12)
在下一个(/usr/share/myapp/node_modules/express/lib/router/index.js:275:10)
在 jsonParser (/usr/share/myapp/node_modules/body-parser/lib/types/json.js:109:7)
你能帮我找出问题所在吗?
【问题讨论】:
-
你在一个 post 处理程序
app.post(...)中有一个 get 处理程序app.get(...) -
将 res.end 改为 res.end(response.body)