Express是什么
express 是一个快速,简单,极简的 node.js 应用开发框架,通过它,可以轻松构建各种 Web 应用(后端)。例如:
接口服务
传统的Web网站
开发工具集成
GitHub:https://github.com/expressjs/express
中文文档(非官方):https://www.expressjs.com.cn
express 本身是极简的,仅提供了 web 开发的基础功能,但是它通过中间件的方式集成了许多外部插件来处理 http 请求。
body-parser:解析 http 请求体
compression:压缩 http 响应
cookie-parser:解析 cookie 数据
cors:处理跨域资源请求
morgan: http 请求日志记录
express 中间件的特性固然强大,让 express 本身变得灵活和简单,要那么多包组合在一起,也是件麻烦事;
express 不对 node.js 已有的特性进行二次抽象,只是在它之上扩展了 web 应用所需的基本功能。
内部使用的还是 http 模块
请求对象继承自: http.IncomingMessage
响应对象继承自:http.ServerResponse
express 特性
简单易学
丰富的基础 API 支持,以及常见的 HTTP 辅助程序,如:重定向、缓存等;
强大的路由功能;
灵活的中间件;
非常稳定且高性能;
视图系统支持14个以上的主流模板引擎;
express 应用场景
传统的 web 网站: Ghost ;
接口服务;
服务端渲染的中间层:对前端来说较好用;
开发工具: Json Server 、webpack-dev-server
Express 起步
使用 express 创建 web 服务,输出 hello world 响应内容;
专门为 express 创建一个目录(就叫 express),并初始化:
安装
安装完后查看版本:
app.js
创建入口模块: app.js
提示1:引入模块 express,创建实例,创建路由,设置响应,创建监听;
启用服务:
或者使用全局 nodemon ,可以帮助我们自动重启服务;
预览效果:
浏览器打开 localhost:3000/ 或 127.0.0.1:3000/
Express 路由
路由是指确定应用程序如何响应客户端对特定端点的请求,该特定端点是 URI(或路径)和特定的 HTTP 请求方法(GET,POST等)。
每个路由可以具有一个或多个处理程序函数,这些函数在匹配该路由时执行。
路由的定义
定义路由的语法:
app 是 Express 实例;
METHOD 是小写的 http 请求方法;
PATH : 是服务器上的路径;
HANDLER:是当路由匹配时执行的功能,就是路由处理函数;
简单示例
这里只写核心变动的代码,启动服务使用 nodemon ,测试工具使用 apifox;
1)在根路径响应 Hello World! :
这个已经体会过了;
2)在根路径响应 POST
请求:
浏览器直接访问,永远是get请求,这里使用 Apifox 或 Postman 来测试 post 请求;
提示:请求方式使用 POST ,地址是 127.0.0.1:3000/ 或 localhost:3000/
提示:如果使用的是 GET 请求方式,那就是示例1展示的 Hello World了;
3)响应 /user
路径的PUT
请求:
提示:路由的路径变成 /user 了,地址栏中也要对应;
4)响应对 /user
路由的 DELETE
请求:
提示:代码的写法是类似的,只需把 put 改成 delete 就行了;
Express请求和响应
Express 应用使用路由回调函数的参数: request 和 response 对象来处理请求和响应的数据。
req :处理请求相关的对象;
res :处理发送响应相关的对象;
Express 不对 node.js 已有的特性进行二次抽象,只是在它之上扩展了 web 应用所需要的基本功能;
内部使用的还是 http 模块;
请求对象继承自: http.IncomingMessage
响应对象继承自: http.ServerResponse
请求对象
req 对象代表 HTTP 请求,并具有请求查询字符串、参数、正文、HTTP标头等的属性。名字这么写,只是为了方便理解,参数名是可以自定义的;
req 对象的属性是继承自 node.js 的 http.IncomingMessage 的,所以它有的,req 都可以使用:
-- req.url :获取请求时的URL;
响应对象
res 对象表示 Express 应用在收到 HTTP 请求时发送的 HTTP 响应。