HTTP模块
web服务器
什么是Web服务器?
当应用程序(客户端)需要某一个资源时,可以向一台服务器,通过HTTP请求获取到这个资源;提供资源的这个服务器就是一个web服务器
目前有很多开源的web服务器:Nginx/Apache(静态)/Apache Tomcat/Node.js
创建服务器的方式
Json.parse()和qs.parse()方法的解析不同:
上面这种结构可以通过Json.parse()继续解析
上面这种可以通过qs.parse()来解析
Http发送网络请求
调用axios库 在前端是用xhr(xmlhttprequest)、Node服务器(http模块)
发送get请求
发送post请求
Express
express整个框架的核心就是中间件,理解了中间件其他一切都非常简单
express是一个路由和中间件的web框架,它本质上是一系列中间件函数的调用
中间件的本质是传递给express的一个回调函数
这个回调函数接受三个参数:
请求对象(request对象)
响应对象(response对象)
next对象(在express中定义的用于执行下一个中间件的函数)
中间件中可以执行那些任务呢?
1、执行任何代码
2、更改请求(request)和响应(response)对象
3、调用栈中的下一个中间件
4、结束请求-响应周期(返回数据)
(如果不调用res.end()就必须调用next()将控制权传递给下一个中间件功能,否则请求将会被挂起)
应用中间件 – 自己编写
express主要提供了两种方式: app/router.user 和 app/router.methods(app.get和app.post等)
user的用法
1、最普通的中间件
2、路径中间件
3、路径和方法匹配的中间件
4、连续注册的中间件
5、中间件的json解析
6、form-data数据的解析
采用了express的库multer 用来解析 form-data格式的数据
7、form-data文件上传处理
调用multer库和path库 来进行文件上传的保存和数据处理
8、日志保存中间件的使用
引用express官方提供的morgan库
Express的路由
我们可以使用express.Router来创建一个路由处理程序:
一个Router实例拥有完整的中间件和路由系统;
因为,它被成为 迷你应用程序(mini-app);
1/路由的使用
创建接口然后导出
在js导入接口文件
\
2/搭建静态服务器
3/express的错误处理
express源码
1、调用express()到底是创建了什么
2.app.listen()启动服务器
app是一个函数(本质也是一个对象),通过Minxin混入proto里面的listen
结合原生来启动服务器(express->http.createServer.listen)
3.app.use(中间件时)内部到底发生了什么?
app的本质就是lazyRouter主路由
本质上是去调router的use方法