我刚刚安装了最新版本的模块。我无法获得任何GET或POST变量。我做错了什么? NODE:v0.12.2
var express = require("express");
var bodyParser = require("body-parser");
var app = express();
app.use(bodyParser.urlencoded({ extended: false }))
// parse application/json
app.use(bodyParser.json())
app.use(function (req, res) {
res.setHeader('Content-Type', 'text/plain')
res.write('you posted:\n')
res.end(JSON.stringify(req.body, null, 2))
});
app.listen(3000,function(){
console.log("Started on PORT 3000");
})
http://localhost:3000/?token=devvvvv GET返回: 你发布了: {}
感谢您的回答,但POST的问题没有解决...... 在http://localhost:3000/上的POST token = as123ds在req.body中返回空数组 我该如何解决这个问题?
答案 0 :(得分:6)
您正在通过查询字符串提交参数并尝试通过请求正文访问它们,在这种情况下 为空。
token参数将在request.query中可用,如下所示:
app.use(function (req, res) {
res.setHeader('Content-Type', 'text/plain')
res.write('you posted:\n')
res.end(JSON.stringify(req.query.token, null, 2))
});
如果您只打算在查询字符串中提交参数,则根本不需要安装正文解析器中间件。
答案 1 :(得分:1)
答案 2 :(得分:0)
bodyparser模块需要http请求"内容类型"属性等于" application / json"。它不会为其他价值观而努力。
答案 3 :(得分:0)
您必须检查客户端中的请求内容类型,此链接可能有帮助
Node (Express) request body empty
这是因为bodyParser解析了application / json, application / x-www-form-encoded和multipart / form-data,它选择 哪个解析器基于Content-Type使用。
答案 4 :(得分:0)
您正在从请求中解析JSON,因此来自客户端的POST必须在HTTP标头中包含'Content-Type': 'application/json'
。如果没有,您将在服务器端空request.body
。