ExpressJS request.params和request.body为空

时间:2017-03-23 18:43:21

标签: node.js express

尝试发送简单的帖子请求,body属性为空对象{}。谁知道为什么?

const compression = require('compression')
const bodyParser  = require('body-parser')
const express = require('express')
const app = express()

app.set('port', process.env.PORT)

// Support JSON-encoded and encoded bodies.
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: true }))

app.post('/api/' + APIVersion.latest() + '/post-job', (req, res) => {
  console.log(req.body)
  res.json({ hey: 'hey' })
})

// Start the server.
app.listen(app.get('port'), err => {
  if (err) {
    return console.log('There was an error', err)
  }

  console.log(`Server running on port ${app.get('port')}`)
})

3 个答案:

答案 0 :(得分:3)

req.params为空,因为您的路线没有指定任何。

Express中,params指的是路由/网址参数。例如,如果您想要一条允许您动态指定用户姓氏的路线,您可以这样做:

app.get('/users/:last/info', (req, res) => {
    // ....
})

这会为路线提供last的参数,可由req.params.last访问。

答案 1 :(得分:0)

req.params保留route params,例如/users/:id

GET /users/123
req.params.id = 123

如果您要求req.query,则需要访问/api/v1/post-job?test=value,或者如果您发布任何内容,则需要访问正文。

答案 2 :(得分:0)

如果没有填充req.body,您需要检查发送POST请求的方式,因为req.body与URL完全分开。如果它是HTML格式:

<form action="/person" method="POST">
  <input name="firstName" type="text">
  <button>Submit</button>
</form>

如果您通过其他途径发送请求,则必须查看该API的文档。