Express是基于Node.js平台,快速、开放、极简的web开发框架
Express的作用和node的内置模块http的功能有些类似,都是用来创建Web服务器的
Express的本质:就是一个第三方模块,提供快速创建Web服务器的功能
Express的目的
方便快捷的创建Web网站的服务器或API接口服务器
**Web**网站服务器:专门对外提供Web网页资源的服务器。 (前后端混合时做的,现在基本是前后端分离)**API**接口服务器:专门对外提供API接口的服务器。 (现在Express的主要使用目的)
1. 基本使用
安装
npm i express
创建基本的Web服务器
// 导入exprss模块const express = require('express')//创建web服务器const app = express()//调用 app.listen(端口号,启动后的回调函数),来启动服务器app.listen(8080,()=>{console.log('server start success is http://127.0.0.1:8080')})
监听GET和POST请求,并影响客户端
监听GET请求
通过app.get()的方法来监听客户端的GET请求
//参数1 :客户端请求的URL地址//参数2 :请求对应的处理函数// req:请求对象(包含了与请求相关的属性和方法)// res:响应对象(包含了与响应相关的属性和方法)app.get('请求URL',(req,res)=>{ /*处理函数*/ })
监听POST请求
通过app.post()方法,来监听客户端的POST请求
//参数1 :客户端请求的URL地址//参数2 :请求对应的处理函数// req:请求对象(包含了与请求相关的属性和方法)// res:响应对象(包含了与响应相关的属性和方法)app.post('请求的URL',(req,res)=>{ /*相关处理函数*/ })
通过res.sen()方法发送处理好的内容给客户端
把响应的内容发送给客户端
app.get ('/user',(req,res)=>{//向客户端发送JSON 对象res.send({name:'yc',age:23,gender:'未知'}) //请求成功时发送给客户端的数据})app.post('/user',(req,res)=>{//向客户端发送文本内容res.send('请求已完成')})
完整代码
// 导入exprss模块const express = require('express')//创建web服务器const app = express()app.get ('/user',(req,res)=>{//向客户端发送JSON 对象res.send({name:'yc',age:23,gender:'未知'}) //请求成功时发送给客户端的数据})app.post('/user',(req,res)=>{//向客户端发送文本内容res.send('请求已完成')})//调用 app.listen(端口号,启动后的回调函数),来启动服务器app.listen(8080,()=>{console.log('server start success is http://127.0.0.1:8080')})
获取URL中的动态参数
通过req.params对象,可以访问到URL中通过:匹配到的动态参数
//URL 地址中,可以通过 : 参数名的形式,匹配动态参数值app.get('/user/:id',(req,res)=>{//req.params 默认是一个空对象// 里面存放着通过 :动态匹配的参数值console.log(req.params.id)})
补充知识点
/:id— id 值不是固定的,可以自己定义,例如:/:ids- 展示到页面中的
id键,是自定义的变量值 - 参数可以有多个,例如:
/:ids/:name这样获得的params可以是req.params.ids和req.params.name```javascript const express = require(‘express’) const app = express()
// 注意:这里的 :id 是一个动态的参数 app.get(‘/user/:id’, (req, res) => { // req.params 是动态匹配到的 URL 参数,默认也会是一个空对象 console.log(req.params) res.send(req.params) })
app.listen(8080, () => { console.log(‘server start success is http://127.0.0.1:8080‘) })
<a name="c471d1e4"></a># 2. 托管静态资源`express`提供一个非常好用的函数:`express.static()`,通过这个函数可以非常方便的创建一个静态服资源务器例如:通过这个函数将目录下下的图片、CSS、JS对外开发访问```javascriptconst express = require('express')const app = express()// 在这里,调用 express.static() 方法,快速的对外提供静态资源app.use(express.static('public'))app.use(express.static('static'))app.listen(8080, () => {console.log('server start success is http://127.0.0.1:8080')})
现在,你就可以访问 public 目录中的所有文件了:
- 访问图片资源:http://localhost:3000/images/bg.jpg
- 访问
css资源:http://localhost:3000/css/style.css - 访问
js资源:http://localhost:3000/js/login.js
注意:Express在指定的静态目录中查找文件,并对外提供资源的访问路径,因此,存放静态文件的目录名不会出现在URL中
托管多个静态资源目录
需要多次调用express.static()函数来托管多个静态资源,访问静态资源时根据添加顺序来查找所需文件
挂载路径前缀
如果希望在托管的静态资源访问路径之前,挂载路径前缀,则可以使用如下方式
app.use('/public',express,static('public'))
如果想显示静态资源的目录,可以将目录加到路径前缀里
可以通过带有 /public 前缀地址来访问 public 目录中的文件了:http://localhost:3000/public/images/kitten.jpg
http://localhost:3000/public/css/style.css
http://localhost:3000/public/js/app.js
也可以通过前缀访问多个静态资源里不同文件夹内的同名文件
3. 常用Express的API
req.method
获取当前请求的方式:GET、POST、PUT
req.query
这个属性获取的是查询字符串?后面拼接的参数,如果没有查询字符串,它就是空对象{}
// GET/search?name=yc&frients=song&otherfrient=wyqreq.query.name //=> ycreq.query.frient //=> song
req.body
这里面保存的是**post**请求上传的数据,经常用于将上传的数据再传回客户端来表示上传数据是否成功
app.post('upload',(req,res,next)=>{console.log(req.body) //将post请求上传的数据显示给客户端})
req.params
// /user/:name/:age// GET/user/yc/24req.params.name //ycreq.params.age //24
获得动态参数
4.mock data
其他





