day26-express概念:基于nodejs的http服务器封装框架*1.使用步骤下载:npminit---->npmiexpress导出:constexpress=require('express')创建服务器:constapp=express()监听端口号:app.listen(端口号)处理请求2.请求处理***1.路由方式-----针对不同的请求方式,有不同的处理方式getpostputdeleteall(处理任何请求,需要精确匹配)使用(处理任何请求,匹配在开头)2.路径匹配exactmatchnotexactmatch---?---修改前一个字符最多一个不完全匹配---+---修改前面字符至少一个不完全匹配---*---表示*占位符可以是任何内容的正则匹配----使用正则表达式表示路径***restfulstylepath---path/:id-此时必须传递id;path/:id?——此时不需要传递id。----req.qureyrestful风格传参获取-----req.params3。处理函数使用一个函数处理这个请求使用多个函数处理这个请求---最后一个函数之前的所有函数都需要添加第三个参数next,调用next函数执行下一步将多个函数放在一个数组中,使用处理请求的数组+函数通过router对象创建:router=express.Router()appusesuse让路由对象处理:app.use(path,router)router处理与app处理语法一致----router.get();router.post()Router模块化:使用use方法和router对象将具体的处理代码放在其他文件中,方便分工协作注意:完整路径-usepath=routerpath***4.请求信息请求方式:req.method客户端ip:req.ip请求头:req.headers请求路径:req.url***响应方式res.end:没有响应头的内容res.send:有响应头的内容res.json:数组或对象内容res.redirect:跳转到其他路由res.sendFile:读取页面并响应内置变量:__dirname:表示绝对当前文件所在文件夹的路径。res.sendStatus:设置响应状态码*三、中间件的概念:在最后一次响应之前,经历的函数称为中间件-----中间件函数必须有next1。内置中间件静态资源托管:app.use(path,express.static(staticresourcefolder))全局内置中间件-----获取post传过来的数据app.use(express.uelencoded({extended:false}))----放数据来自postonreq,req.bodyPartialmiddleware---把code放在local参数中,只在当前作用域内有效2.自定义中间件自定义获取post数据的中间件,中间件的req和req中的req最终的执行函数是一样的,所以可以在中间件的req中添加属性,在最终路由的req中可以获取到这个数据3.第三方中间件下载模块:npmibody-parser导入这个模块:constbodyParser=require('body-parser')使用这个中间件:app.use(bodyParser.urlencoded({extended:false}))4.异常处理中间件app.use((err,req,res,next)=>{})----err是必须放在所有路由下面的错误信息---当上面的路由报错,这里会捕获错误,执行5.404中间件app匹配路径
