Http模块和Express框架

1,197 阅读2分钟

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方法