基於 Node.js 平臺,快速、開放、極簡的 Web 開發框架。html
Express的特色是易於入門,並且可使用各類中間件擴展它的功能。node
但因爲Express開發相對較早,主要使用回調函數進行異步操做,沒法使用Async函數,所以原團隊也開發了功能更強大的Koa來解決Express的不足之處。git
不過對於開發人員,Express仍是不可或缺的一項重要技能。github
示例代碼:/lesson01/server.jsexpress
/lesson01
文件夾經過npm init -y
初始化項目npm install express --save
安裝Expressconst express = require('express')
const server = express()
server.listen(8080)
console.log(`Server started at 8080`)
複製代碼
示例代碼:/lesson01/server.jsnpm
一般接收到的請求不止get方法,經常使用的有:json
server.get
,處理get請求server.post
,處理post請求server.use
,處理全部方法的請求,它的第一個路由參數能夠不傳,此時表示處理全部接口請求,以下:server.use('/first', (req, res, next) => {
console.log('first')
next()
})
複製代碼
除了這3個方法以外,還有server.put、server.delete等方法,具體能夠查看文檔api
示例代碼:/lesson01/server.jsbash
Express自帶了路由功能,不須要引用中間件便可添加路由。服務器
server.get('/first', (req, res, next) => {
res.send({
error: 0,
msg: '請求成功'
})
})
複製代碼
代碼含義以下:
res.send(new Buffer('wahoo'));
res.send({ some: 'json' });
res.send('<p>some html</p>');
res.send(404, 'Sorry, cant find that');
res.send(404);
複製代碼
此時訪問http://localhost:8080/first,便可看到頁面顯示:{"error":0,"msg":"請求成功"}
。
示例代碼:/lesson01/server.js
next方法的做用是用於對請求的多級處理,例如:
server.get('/second', (req, res, next) => {
if (Number(req.query.num) > 10) {
// 知足條件時,纔可觸發同名的下一個路由。
next()
} else {
res.send({
error: 1,
msg: '請輸入大於10的數字'
})
}
})
server.get('/second', (req, res, next) => {
res.send({
error: 0,
msg: '輸入成功'
})
})
複製代碼
代碼含義以下:
示例代碼:/lesson01/server.js
有時會須要給下一級的處理傳參,只要直接給req實例中添加屬性便可,但請注意不要覆蓋系統默認屬性,以下:
server.get('/second', (req, res, next) => {
if (Number(req.query.num) > 10) {
// 知足條件時,纔可觸發同名的下一個路由。
req.randomNum = Math.floor(Math.random() * 100)
next()
} else {
res.send({
error: 1,
msg: '請輸入大於10的數字'
})
}
})
server.get('/second', (req, res, next) => {
res.send({
error: 0,
msg: `輸入成功,接收到的隨機數爲${req.randomNum}`
})
})
複製代碼
訪問http://localhost:8080/second?num=80便可看到前臺打印出的req.randomNum結果。