Express 简介、安装、使用和案例

时间:2022-12-15 21:59:04

Express是什么

express 是一个快速,简单,极简的 node.js 应用开发框架,通过它,可以轻松构建各种 Web 应用(后端)。例如:

接口服务

传统的Web网站

开发工具集成

官网:​​http://expressjs.com​

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),并初始化:

> npm init -y


安装

> npm install express

安装完后查看版本:

> npm list express

Express 简介、安装、使用和案例


app.js

创建入口模块: app.js

const express = require('express')
const app = express()
app.get('/',(req,res)=>{
res.send('Hello World!')
})
app.listen(3000,()=>{
console.log(`Server is running ...`);
})

提示1:引入模块 express,创建实例,创建路由,设置响应,创建监听; 

启用服务:

> node app.js

或者使用全局 nodemon ,可以帮助我们自动重启服务;

​Nodemon 简介、安装、使用和配置​

> nodemon app.js

预览效果:

浏览器打开 localhost:3000/ 或 127.0.0.1:3000/ 

Express 简介、安装、使用和案例


Express 路由

路由是指确定应用程序如何响应客户端对特定端点的请求,该特定端点是 URI(或路径)和特定的 HTTP 请求方法(GET,POST等)。

每个路由可以具有一个或多个处理程序函数,这些函数在匹配该路由时执行。


路由的定义

定义路由的语法:

app.METHOD(PATH,HANDLER)

app 是 Express 实例;

METHOD 是小写的 http 请求方法;

PATH : 是服务器上的路径;

HANDLER:是当路由匹配时执行的功能,就是路由处理函数;


简单示例

这里只写核心变动的代码,启动服务使用 nodemon ,测试工具使用 apifox;

1)在根路径响应 Hello World! :

app.get('/',(req,res)=>{
res.send('Hello World!')
})

这个已经体会过了;

2)在根路径响应 ​POST 请求:

app.post('/',(req,res)=>{
res.send('got a post request')
})

浏览器直接访问,永远是get请求,这里使用 Apifox 或 Postman 来测试 post 请求;

Express 简介、安装、使用和案例

提示:请求方式使用 POST ,地址是  127.0.0.1:3000/ 或 localhost:3000/ 

提示:如果使用的是 GET 请求方式,那就是示例1展示的 Hello World了;

Express 简介、安装、使用和案例

3)响应 /user 路径的PUT​ 请求:

app.put('/user',(req,res)=>{
res.send('got a PUT request at /user')
})

Express 简介、安装、使用和案例

提示:路由的路径变成 /user 了,地址栏中也要对应;

Express 简介、安装、使用和案例

4)响应对 /user 路由的 DELETE​ 请求:

app.delete('/user',(req,res)=>{
res.send('got a DELETE request at /user')
})

提示:代码的写法是类似的,只需把 put 改成 delete 就行了;


Express请求和响应

Express 应用使用路由回调函数的参数: request 和 response 对象来处理请求和响应的数据。

app.get('/',function(req,res){
// ...
})

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 响应。