day26-express

概念:基于nodejs的http服务器封装好的框架

*一、应用步骤

下载:npm init ---->npm i express导出:const express = require('express')创立服务器:const app = express()监听端口号:app.listen(端口号)解决申请

二、申请的解决

***1.路由办法-----针对不同的申请形式,有不同的办法解决    get    post    put    delete    all(解决任意申请,需齐全匹配)    use(解决任意申请,匹配结尾)2.门路匹配    齐全匹配    不齐全匹配---?---润饰后面字符最多呈现一次    不齐全匹配---+---润饰后面字符起码呈现一次    不齐全匹配---*---示意*占位的这个中央能够是任意内容    正则匹配---应用正则表达式代表门路    ***restful格调门路---门路/:id-则此时id必传;门路/:id?-此时id非必传    传统形式申请门路的get传递参数获取-----req.qurey    restful格调传递参数获取-----req.params3.处理函数    应用一个函数解决此次申请    应用多个函数解决此次申请---最初一个函数后面的所有函数都须要增加第三个参数next,调用next函数能力执行下一步    将多个函数放在一个数组中,用数组解决申请    数组+函数    通过路由器对象解决        创立:router = express.Router()        app用use让路由对象解决:app.use(门路,router)        router解决跟app解决语法统一----router.get();router.post()        路由器模块化:利用use办法和路由器对象,将解决的具体代码放在其余文件中,不便分工合作        留神:残缺门路 - use门路 = router门路***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(门路,express.static(动态资源文件夹))    全局内置中间件-----获取post传递的数据        app.use(express.uelencoded({extended:false}))----将post来的数据放在req上,req.body     部分中间件---将代码放到部分的参数中,只在以后作用域无效2.自定义中间件    自定义获取post数据的中间件,中间件的req和最终执行函数中的req是同一个,所以能够在中间件给req增加属性,在最终路由的req就能获取到这个数据3.第三方中间件    下载模块:npm i body-parser    导入这个模块:const bodyParser = require('body-parser')    应用这个中间件:app.use(bodyParser.urlencoded({extended:false}))4.异样解决中间件    app.use((err,req,res,next) => {})----err是报错信息        必须放在所有路由上面---当下面的路由报错了会在这里捕捉到谬误并执行5.404中间件    app.use((req,res,next) => {})        必须放最所有路由上面,当下面路由都没有匹配到门路时会执行