使用express创建服务器,发起Get,Post请求
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| const express=require('express')
const app=express()
app.get('/user',(req,res)=>{ res.send({name:'zs',age:20,gender:'男'}) }) app.post('/user',(req,res)=>{ res.send('请求成功') })
app.get("/",(req,res)=>{ console.log(req.query) res.send(req.query) })
app.get("/user/:id/:username",(req,res)=>{ console.log(req.params) res.send(req.params) })
app.listen(80,()=>{ console.log('express server running at http://127.0.0.1') })
|
托管静态资源
express.static():创建一个静态资源服务器,通过如下代码可以将public目录下的图片,CSS文件,JavaScript文件对外开放访问
1 2 3 4 5 6 7 8 9 10 11 12
| const express=require('express')
const app=express()
app.use(express.static('public')) app.use(express.static('files'))
ap.use('/public',express.static('public',))
app.listen(80,()=>{ console.log('express server running at http://127.0.0.1') })
|
中间件
中间件的作用:
多个中间件之间共享一份req和res,基于这种特性可以在上游的中间件中,统一为req或res对象添加自定义顶点属性或方法,供下游的中间件或路由进行使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| const express=require("express") const app=express()
app.use((req,res,next)=>{ const time=Date.now() req.startTime=time next() }) app.get('/',(req,res)=>{ res.send('Home page'+req.startTime) }) app.get('/user',(req,res)=>{ res.send('User page'+req.startTime) }) app.listen(80,()=>{ console.log('http://127.0.0.1') })
|
中间件分类:
[]: http://expressjs.com/en/guide/using-middleware.html
错误级别的中间件要注册在所有路由之后
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| const express = require("express"); const app=express() app.get('/',(req,res)=>{ throw new Error('服务器发生错误') res.send('Home page') })
app.use((err,req,res,next)=>{ console.error(err.message) res.send('Something broke:'+err.message) }) app.listen(80,()=>{ console.log('http://127.0.0.1') })
|
使用中间件的注意事项
- 要在路由之前注册中间件
- 客户端发送过来的请求,可以连续调用多个中间件进行处理
- 执行完中间件的业务代码,要记得调用next()函数
- 连续调用的多个中间件时,多个中间件间共享req和res对象