express高效入門教程(2)

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()
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市练慕,隨后出現(xiàn)的幾起案子惰匙,更是在濱河造成了極大的恐慌技掏,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,589評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件项鬼,死亡現(xiàn)場離奇詭異哑梳,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)绘盟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門鸠真,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人龄毡,你說我怎么就攤上這事吠卷。” “怎么了沦零?”我有些...
    開封第一講書人閱讀 165,933評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵祭隔,是天一觀的道長。 經(jīng)常有香客問我路操,道長疾渴,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,976評(píng)論 1 295
  • 正文 為了忘掉前任屯仗,我火速辦了婚禮程奠,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘祭钉。我一直安慰自己,他們只是感情好己沛,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,999評(píng)論 6 393
  • 文/花漫 我一把揭開白布慌核。 她就那樣靜靜地躺著,像睡著了一般申尼。 火紅的嫁衣襯著肌膚如雪垮卓。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,775評(píng)論 1 307
  • 那天师幕,我揣著相機(jī)與錄音粟按,去河邊找鬼。 笑死霹粥,一個(gè)胖子當(dāng)著我的面吹牛灭将,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播后控,決...
    沈念sama閱讀 40,474評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼庙曙,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了浩淘?” 一聲冷哼從身側(cè)響起捌朴,我...
    開封第一講書人閱讀 39,359評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤吴攒,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后砂蔽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體洼怔,經(jīng)...
    沈念sama閱讀 45,854評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,007評(píng)論 3 338
  • 正文 我和宋清朗相戀三年左驾,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了镣隶。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,146評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡什荣,死狀恐怖矾缓,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情稻爬,我是刑警寧澤嗜闻,帶...
    沈念sama閱讀 35,826評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站桅锄,受9級(jí)特大地震影響琉雳,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜友瘤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,484評(píng)論 3 331
  • 文/蒙蒙 一翠肘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧辫秧,春花似錦束倍、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,029評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至柿究,卻和暖如春邮旷,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蝇摸。 一陣腳步聲響...
    開封第一講書人閱讀 33,153評(píng)論 1 272
  • 我被黑心中介騙來泰國打工婶肩, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人貌夕。 一個(gè)月前我還...
    沈念sama閱讀 48,420評(píng)論 3 373
  • 正文 我出身青樓律歼,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蜂嗽。 傳聞我的和親對(duì)象是個(gè)殘疾皇子苗膝,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,107評(píng)論 2 356

推薦閱讀更多精彩內(nèi)容