认识express
express是基于Node.js平台的web开发框架
作用和Node.js内置的http模块类似,是专门用来创建Web服务器的。
本质上Express就是一个npm的第三方包提供了快速创建Web服务器的便捷方法。
中文官网:expressjs.com.cn
express的作用:快速方便的创建 Web网站服务器和 API 接口服务器
express的基本使用
一、下载express包 npm i express@4.17.1
二、创建基本的web服务器
// 导入express
const express = require('express')
// 创建web服务器
const app = express()
// 启动web服务器
app.listen(80,()=>{
console.log('express server running at http://127.0.0.1')
})
监听 GET、POST 请求
1、get请求一般用来请求获取数据、post请求一般作为发送数据到后台,传递数据,创建数据
2、get请求也可以传参到后台,但是传递的参数则显示在地址栏,安全性低,且参数的长度也有限制(2048字符)、 post请求则是将传递的参数放在request body中,不会在地址栏显示,安全性比get请求高,参数没有长度限制
3、get请求刷新浏览器或者回退没有影响、post请求则会重新请求一遍
4、get请求可以被缓存,也会保留在浏览器的历史记录中、post请求不会被缓存,也不好保留在浏览器的历史记录中
5、get请求通常是通过url地址请求、post常见的则是form表单请求
参数一、客户端请求的URL地址 参数二、请求队形的处理函数
req 请求对象 res 响应对象
通过 app.post( )方法监听客户端POST请求。
通过 app.get( )方法可以监听客户端的GET请求。
把内容响应给客户端
通过 res.send( )方法,可以把处理好的内容发送给客户端
// 监听客户的 GET 和 POST 请求,并向客户端响应具体内容
app.get('/user',(req,res)=>{
// 调用res.send方法向客户端响应一个JSON对象
res.send( {
name: 'zhangsan',age: 20, gender: '男'})
})
app.post('/user',(req,res)=>{
// 调用res.send向客户端响应一个文本字符串
res.send('请求成功')
})
获取 URL 中携带的查询参数
通过 req.query 对象可以访问到客户端通过查询字符串的形式,发送到服务器的参数
app.get('/',(req,res)=>{
// 通过 req.query 可以获取到客户端发送过来的查询参数
// 默认情况下req.query是空对象
console.log(req.query)
res.send(req.query)
})
获取URL中的动态参数
通过 req.params 对象可以访问到URL中通过 :匹配到的动态参数
// 这里的 :id是一个动态的参数
app.get('/user/:id',(req,res)=>{
// req.params 是动态匹配到的 URL 参数,默认也是一个空对象
console.log(req.params)
res.send(req.params)
})
向 http://127.0.0.1/user/ABCD发送请求后得到响应:
{
"id": "ABCD"
}
express.static 托管静态资源
express.static( )方法可以方便的创建一个静态资源服务器。 通过如下代码可以将public目录下的文件对外开放
app.use(express.static('public'))
注意:存放静态文件的目录名不会出现在URL中
**想要托管多个静态资源目录,则多次调佣express.static( )即可
const express = require('express')
const app = express()
// 调用 express.static( ) 方法快速对外提供静态资源
// 传入文件目录位置
app.use(express.static('./clock'))
app.use(express.static('./files'))
// 启动服务
app.listen(80,()=>{
console.log('express server running at http://127.0.0.1')
})
静态资源访问路径之前挂载前缀
app.use('/abc',express.static('./files'))
:只需要在express.static 前面添加一个前缀即可
学习nodemon工具
该工具可以监听Node.js项目的代码,如果项目的代码发生了修改,该工具会自动重启项目,更方便开发和调试。
安装nodemon npm install -g nodmon
安装nodemon工具后,启动项目的方法:nodemon app.js
Express路由
路由的概念:就是映射关系。在express中路由指的是客户端的请求与服务器处理函数之间的映射关系
express中的路子分三部分组成
- 请求的类型(METHOD):GET或者POST
- 请求的地址PATH
- 处理函数HANDLER
app.METHOD(PATH,HANDLER)
一个简单的路由的例子
app.get('/',function(req,res){
res.send('hello,world')
})
app.post('/',(req,res)=>{
res.send('got a POST request')
})
路由的匹配过程
每一个请求到达服务器都需要先经过路由的匹配,匹配成功只会才会调用对应的处理函数。
会按照路由的顺序进行匹配。
如果请求类型和请求的URL同事匹配Express才会将这次请求转交给对应的function进行处理。
模块化路由
Express不建议将路由直接挂载到app上。为了方便对路由进行模块化的管理,一般将路由抽离为单独的模块。
一、创建路由模块对应的 .js 文件
二、调用 **express.Router( )**创建路由对象
三、向路由对象上挂载具体的路由
四、使用 module.exports向外共享路由对象
五、使用 app.use( )函数注册路由模块
创建路由模块
// 这是一个路由模块
//1、导入express
const express = require('express')