2.請求和響應(yīng)
#2.1.請求相關(guān)
#2.1.1.返回一個(gè)html頁面
// 注意path模塊需要先引入
app.get('/', function (req, res){
res.sendFile(path.resolve('./views/index.html'))
})
#2.1.2.接收前臺(tái)get方式發(fā)送過來的數(shù)據(jù)
// get方式發(fā)送過來的數(shù)據(jù) 使用req.query接收
app.get('/getuser', function (req, res) {
console.log(req.query.userid)
})
// 完整代碼
// 引入express
var express = require('express')
var path = require('path')
var app = express()
var userArr = [
{"id": 1, "name": "xiaoqiang", "age": 18},
{"id": 2, "name": "xiaoli", "age": 19},
{"id": 3, "name": "xiaowang", "age": 20},
{"id": 4, "name": "xiaozhang", "age": 21}
]
app.get('/', function (req, res){
res.sendFile(path.resolve('./views/index.html'))
})
app.get('/user', function (req, res) {
res.sendFile(path.resolve('./views/login.html'))
})
app.get('/getuser', function (req, res) {
res.send(userArr.filter(function (item) {
console.log(item.id, req.query.userid)
return item.id == req.query.userid
}))
})
app.listen(8090, function (error) {
console.log('listening on 8090')
})
#2.1.3.接收前臺(tái)post方式發(fā)送過來的數(shù)據(jù)
接收post數(shù)據(jù)荚守,我們可以使用一個(gè)叫做body-parser的模塊來幫我們完成
1.第一步风秤,先安裝這個(gè)模塊
// 先安裝這個(gè)模塊
npm install body-parser --save
2.第二步,引入這個(gè)模塊絮吵,并且作為插件使用
var bodyParser = require('body-parser')
app.use(bodyParser.urlencoded({extended: false}))
3.第三步虱咧,獲取數(shù)據(jù)
app.post('/login', function (req, res) {
res.send(req.body.user)
})
#2.1.4.文件上傳
文件上傳需要用到multer插件否彩,先安裝multer
npm install multer --save
接下來需要引入multer
var multer = require('multer')
配置multer
// dest 表示 設(shè)置上傳文件目錄
var upload = multer({dest: './upload'})
- 單文件上傳
// 處理文件上傳請求
app.post('/upload', upload.single('fl'), function (req, res) {
res.send(req.file)
})
- 多文件上傳
// 多文件上傳
app.post('/upload', upload.array('fl', 3), function (req, res) {
res.send(req.files)
})
- 自定義文件路徑和文件名
// 檢查目錄是否存在舒帮,不存在就創(chuàng)建
var createFolder = function(folder) {
try {
fs.accessSync(folder)
} catch (e) {
fs.mkdirSync(folder)
}
}
var uploadFolder = './upload'
// 先創(chuàng)建好上傳目錄
createFolder(uploadFolder)
var storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, uploadFolder)
},
filename: function (req, file, cb) {
cb(null, file.fieldname + '-' + new Date().getTime() + path.extname(file.originalname))
}
})
var upload = multer({storage: storage})
app.post('/upload', upload.array('fl', 3), function (req, res) {
res.send(req.file)
})
#2.2.響應(yīng)相關(guān)
#2.2.1.send方法
send方法可以返回多種類型數(shù)據(jù)
// 返回一個(gè)對(duì)象
res.send({"name":"老張", age: 48})
// 返回?cái)?shù)組
// res.send([1, 2, 3])
// 報(bào)錯(cuò)
// res.write({"name": "xiaoqiang"})
// res.end()
#2.2.2.sendStatus
返回狀態(tài)碼
res.sendHeader(404)
如果沒有這個(gè)方法,你會(huì)這樣寫:
res.writeHead(404, {'Content-Type': 'text/plain'})
res.write("not found!!!!")
res.end()
很明顯第一種寫法更簡潔
#2.2.3.redirect
redirect用于重定向
app.get('/re', function (req, res) {
res.redirect('http://nodeing.com')
})
如果不使用redirect末秃,而使用原生的語法概页,需要這樣寫:
res.setHeader('location', 'http://nodeing.com')
res.writeHead(301)
res.end()