安装
npm install express --save
用法
const express = require('express')
const app = express();
app.get('/news',(req,res,next)=>{
console.log(1)
res.status(200)
res.end()
next()
},
(req,res,next)=>{
console.log(2)
next()
})
const port = 5008;
app.listen(port,()=>{
console.log('服务以启动')
}
)
路由
格式: app.METHOD(PATH, HANDLER)
app是express的一个实例。
METHOD是一个HTTP请求方法,小写。
“PATH”为服务器上的路径。
HANDLER是匹配路由时执行的函数。
Express支持以下与HTTP方法同名的路由方法:
- checkout
- copy
- delete
- get
- head
- lock
- merge
- mkactivity
- mkcol
- move
- m-search
- notify
- options
- patch post
- purge
- put
- report
- search
- subscribe
- trace
- unlock
- unsubscribe
get方法
app.get('/', function (req, res) {
res.send('Hello World!')
})
postt方法
app.post('/', function (req, res) {
res.send('Hello World!')
})
put方法
app.put('/', function (req, res) {
res.send('Hello World!')
})
delete方法
app.delete('/', function (req, res) {
res.send('Hello World!')
})
app.all()
匹配所有方法
响应
app.get('/example/a', function (req, res) {
res.send('Hello from A!')
})
响应方法
res.download()提示需要下载的文件。
res.end()结束响应过程。
res.json()发送一个JSON响应。
res.jsonp()发送一个支持JSONP的JSON响应。
res.redirect()重定向请求。
res.render()渲染一个视图模板。
res.send()发送各种类型的响应。
res.sendFile()以字节流的形式发送一个文件。
res.sendStatus()设置响应状态代码并将其字符串表示形式作为响应体发送。
中间件
处理函数实际就是一个中间件,一个方法可以有多个处理函数,他们需要依次传递,需要使用第三个参数next,next是一个回调函数,
app.get('/news',(req,res,next)=>{
console.log(1)
res.status(200)
res.end()
next()
}
请注意上面对next()的调用。调用这个函数调用应用程序中的下一个中间件函数。next()函数不是Node.js或Express API的一部分,但是传递给中间件函数的第三个参数。next()函数可以命名为任何名称,但按照约定,它总是命名为“next”。为避免混淆,请始终使用此约定
app.get('/news',(req,res,next)=>{
console.log(1)
next()
},
(req,res,next)=>{
console.log(2)
next()
}
注意:如果有多个中间件传递时,如果没有res.end(),服务器会返回404
必须要在某个中间件结束响应,后续的中间件也会运行
app.get('/news',(req,res,next)=>{
console.log(1)
res.status(200)
res.end()
next()
},
(req,res,next)=>{
console.log(2)
next()
}
如果之前已经结束响应,在之后的中间件中就不能在使用完成响应的api
绕过中间件
app.get('/news',(req,res,next)=>{
console.log(1)
res.status(200)
res.end()
next('router')
},
(req,res,next)=>{
console.log(2)
next()
}
在next函数参数中传递router ,这样就会绕过后面的中间件,执行后面的路由
router
在express对象中有一个Router()方法,用来创建一个路由router,
被创建的router路由也是一个中间件,用在app.use(router)当中,
被创建的router路由也具备路由功能,可以调用路由的各种方法,
app.use(router) 会自动匹配并调用router.method()
用法
var express = require('express')
var app = express()
var router = express.Router()
//第一步 先使用router各种方法创建路由,
router.get('/',function(req, res,next){
console.log('router')
next()
})
//第二部,使用app.use(router) 挂载
app.use('/news',router)
注意:app.use(baseUrl,router)
,中的路径会作为router.method()基路径,只有匹配到baseUrl,这个路由才会起作用