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
是空的,因为你的路由没有指定任何。
在Express
, params
指的是路由/ 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的文档。