sunwukong 2019-06-28
express框架逻辑
首先express提供4大类的api:
他们之前的逻辑如下:
express()是顶层入口函数,其返回Application实例
var express = require();
var app = express();
Application 是express的应用实例,其实现各种http路由方法(get、post、put、delete等)
app.get('/user',(req,res)=>{res.send('hello world')})
Request、Response分别是可读流、可写流,由Application http的方法中的回调函数返回。
app.get('/user',(req,res)=>{res.send('hello world')})
Router 与Application功能相似,可以看做是“mini-application“,使用地较少
app.get('/user',(req,res)=>{res.send('hello world')})
下面所说每个大类的一些关键方法:
express
express提供了4个中间件(在4.16.x版本前只有唯一一个的中间件express.static)
express.json() //解析(获取)json格式数据
express.static() //实现静态服务器(web的根目录)
express.Router() //实现router实例
express.urlencoded() //解析(获取)x-www-form-urlencoded格式(表单提交)数据,一般也是返回json数据
Application
Application提供了很多路由设计方法
app.get() //http get请求
app.post()
app.put()
app.all() //所有的http方式
app.use() //加入中间件或http get方式的模糊匹配
app.router() //匹配同一个路径的多种http方式
app.listen() //监听端口
app.engine() //设置模块引擎,如htmljade等
注意:Application的各种路由方法要注意优先匹配的问题,写在最前面会优先被匹配,而一旦匹配到路由一般就不会往下继续匹配。如果要继续匹配的话,可以使用next()方法。所以我们在实际的使用过程中,会把模糊匹配放在精准匹配的后面,如get()会放到all()的前面。
Request
Request 可读流,提供“请求”各种属性和方法,实际中属性用的比较多。
req.body //请求体,需使用body-parser中间件
req.cookies //获取cookie
req.params //获取路径参数,如 /user/id/2
req.query //获取get参数,如 /user?id=2
req.path //请求路径
req.route
Response
Response 可写流,提供“响应”各种属性和方法。
res.cookie() //设置cookie 需使用cookie-parser中间件
res.send() //返回数据
res.end() // 返回
res.json() //返回json
res.redirect() //跳转,302
res.status() //设置返回的状态码 如 res.status(200)
router
router使用相对较少。
说明:上面这是列举了一些常用的方法、属性,还有很多没有提到,大家可以到http://www.expressjs.com.cn/4... 查看和学习,里面每个方法都有使用到的例子和场景,希望大家多多去看文档。
最后写个简单的例子:1.实现静态服务器,可访问到静态资源;2.restful api
本地目录:
static文件夹中有2个静态资源:meinv.jpg、test.txt
在浏览器上访问:127.0.0.1:3000/meinv.jpg
即可访问到这张meinv.jpg,但我们没有做任何的路由设置!!!
postman访问:
使用了express框架,我们可以不用再处理路由设置了。直接把精力放在业务上,并且可以快速实现!所以大家要好好地掌握express文档。
下面的课程我们主要说基于express的微信公众号开发实战。