express 框架中的参数小记

首发地点:https://clarencep.com/2017/04…
转载请申明出处

注重:req.params 只要在参数化的途径中的参数。查询字符串中的参数要用 req.query.

比方:

// server.js:
app.post('/user/:id', function(req, res){
    console.log('req.params: ', req.params)
    console.log('req.query: ', req.query)
    console.log('req.body: ', req.body)
})
// HTTP request:
POST /user/123?foo=1&bar=2
Content-Type: application/x-www-form-urlencoded

aaa=1&bbb=2

如许的要求,应该是要用 req.query.fooreq.query.bar 来猎取 foo 和 bar 的值,终究打印出以下:

req.params:  { id: '123' }
req.query:  { foo: '1', bar: '2' }
req.body:  { aaa: '1', bbb: '2' }

关于 req.body

另外,express 框架自身是没有剖析 req.body 的 — 假如打印出来 req.body: undefined则申明没有装置剖析 req.body 的插件:

为了剖析 req.body 平常能够装置 body-parser 这个插件:


// 假定 `app` 是 `express` 的实例:

const bodyParser = require('body-parser')

// 在所有路由前插进去这个中间件:

app.use(bodyParser.urlencoded())

如许就能够了。

bodyParser.urlencoded()是HTML中默许的查询字符串情势的编码,即application/x-www-form-urlencoded. 假如须要剖析其他花样的,则须要离别到场其他花样的中间件,比方:

  • bodyParser.json() 支撑JSON花样(application/json

  • bodyParser.raw() 将会把 req.body 置为一个 Buffer (Content-Type:application/octet-stream)

  • bodyParser.text() 将会把 req.body 置为一个 string (Content-Type: text/plain)

但是上传文件用的 multipart/form-data 花样却没有被 bodyParser 所支撑,须要运用 busboy 之类的其他中间件。

    原文作者:牧毅
    原文地址: https://segmentfault.com/a/1190000008918333
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞