node.js - express無法獲取req.params值?
問題描述
var express = require(’express’);var bodyParser = require(’body-parser’)var port = process.env.PORT || 3000var app = express()var path = require(’path’);var mongoose = require(’mongoose’)var _ = require(’underscore’)var fs = require(’fs’);var jsonParser = bodyParser.json()var urlencodedParser = bodyParser.urlencoded({ extended: false })mongoose.connect(’mongodb://localhost/meetdb’)app.set(’views’, ’./views/pages’)app.set(’view engine’, ’jade’)app.use(urlencodedParser);app.use(express.static(path.join(__dirname, ’public’)))app.listen(port)// user 相關app.post(’/user/signup’,function (req,res){ console.log(req.params) console.log(req.body)})
可以獲取到req.body,但是無法獲取到req.params。我看網上說的是可以同時獲取query和body的值。
問題解答
回答1:通常是req.params吧,來獲取路徑中的參數
回答2:據我了解,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=2Content-Type: application/x-www-form-urlencodedaaa=1&bbb=2
這樣的請求,應該是要用 req.query.foo 和 req.query.bar 來獲取 foo 和 bar 的值,最終打印出如下:
req.params: { id: ’123’ }req.query: { foo: ’1’, bar: ’2’ }req.body: { aaa: ’1’, bbb: ’2’ }
話說這種問題 console.log 的效率太慢,為啥不用斷點:
看看用VSCode打斷點查看變量爽爆了。
回答3:/user/signup 這里 /user/signup/:aaa 你才有params
相關文章:
1. docker images顯示的鏡像過多,狗眼被亮瞎了,怎么辦?2. javascript - 關于audio標簽暫停的問題3. 網頁爬蟲 - 用Python3的requests庫模擬登陸Bilibili總是提示驗證碼錯誤怎么辦?4. 請教各位大佬,瀏覽器點 提交實例為什么沒有反應5. javascript - 移動端textarea不能上下滑動,該怎么解決?6. Matlab和Python編程相似嗎,有兩種都學過的人可以說說嗎7. 大家好,請問在python腳本中怎么用virtualenv激活指定的環境?8. javascript - Html5做移到端定位,獲取授權拒絕了怎么辦?9. javascript - 微信小程序封裝定位問題(封裝異步并可能多次請求)10. javascript - Web微信聊天輸入框解決方案
