ExpressJS request.params和request.body为空

试图发送一个简单的发布请求, 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')}`) }) 

req.params是空的,因为你的路由没有指定任何。

Expressparams指的是路由/ url参数。 例如,如果你想要一个允许你dynamic指定用户姓氏的路由,你可以这样做:

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

这会给路由一个last的参数,可以通过req.params.last访问。

req.params保存路由参数 ,例如/users/:id

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

你想访问req.query ,如果你要求/api/v1/post-job?test=value ,或者身体本身如果你发布的话。

如果req.body没有被填充,你需要检查你是如何发送你的POST请求的,因为req.body是完全独立于URL的。 如果它在HTML表单中:

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

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