Express的使用方法,路由的匹配与使用
Posted 别Null.了
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Express的使用方法,路由的匹配与使用相关的知识,希望对你有一定的参考价值。
目录
Express简介
什么是Express
Express 是基于 Node.js 平台,快速、开放、极简的 Web 开发框架。
通俗的理解:Express的作用和Node.js内置的http模块类似,是专门用来创建Web服务器的。
本质 :就是一个npm上的第三方的包,提供了快速创建Web服务器的便捷方法。
Express的中文官网 http://www.expressjs.com.cn/
问题:
不使用Express能否创建Web服务器? 能,使用Node.js提供的原生http模块。
有了http模块为什么还要用Express? http内置模块用起来很复杂且开发效率低,Express是基于http模块进一步封装出来的,能够极大的提高开发效率。
Express能做什么
最常见的两种服务器分别是:
- Web网站服务器:专门对外提供Web网页资源的服务器
- API接口服务器:专门对外提供API接口的服务器
使用Express,我们可以方便、快捷的创建Web网站的服务器或API接口的服务器。
Express的基本使用
给大家介绍一下 nodemon ,在编写调试 Node.js 项目的时候,如果修改了项目的代码,则需要频繁的手动close掉然后再重新启动,非常繁琐。我们可以使用 nodemon这个工具,它能够监听项目文件 的变动,当代码被修改后,nodemon 会自动帮我们重启项目,极大方便了开发和调试。
安装nodemon npm install -g nodemon
安装
在项目所处目录中,运行终端命令,即可将Express安装到项目中使用。 npm i express@4.17.1
创建基本的Web服务器
//导入express
const express = require('express');
//创建web服务器
const app = express();
//调用app.listen(端口号,启动成功后的回调函数),启动服务器
app.listen(80,()=>{
console.log('express server running at http://127.0.0.1')
})
监听GET请求和POST请求
通过 app.get() 方法,可以监听客户端的 GET 请求,
通过 app.post() 方法,可以监听客户端的 POST 请求,
具体的语法格式如下:
//参数1:客户端请求的URL地址
//参数2:请求对应的处理函数
// req:请求对象(包含了与请求相关的属性与方法)
// res:响应对象(包含了与响应相关的属性与方法)
app.get('请求的URL',function(req,res){ /*处理函数*/ })
app.post('请求的URL',function(req,res){ /*处理函数*/ })
把内容响应给客户端
通过res.send()方法,可以把处理好的内容发送给客户端
app.get('/user',(req,res)=>{
//向客户端发送JSON对象
res.send({name:'张三',age:20,gender:'男'})
})
app.post('/user',(req,res)=>{
//向客户端发送文本内容
res.send('请求成功!')
})
挂载路径前缀
如果希望在托管的静态资源访问路径之前挂载路径前缀,则可以使用:
app.use('public',express.static('public'))
现在就可以通过带有/public 前缀地址来访问public目录中的文件了。
Express路由
在Express中,路由指的就是客户端的请求与服务器处理函数之间的映射关系。
Express中的路由分3部分组成,分别是请求的类型、请求的URL地址、处理函数。
Express中的路由的例子
//匹配GET请求,且请求URL为 /
app.get('/',function(req,res){
res.send('Hello World!')
})
//匹配POST请求,且请求URL为 /
app.post('/',function(req,res){
res.send('Got a POST request')
})
路由的匹配过程
每当一个请求到达服务器之后,需要先经过路由的匹配,只有匹配成功之后,才会调用对应的处理函数。在匹配时,会按照路由的顺序进行匹配,如果请求类型和请求的 URL 同时匹配成功,则 Express 会将这次请求,转交给对应的 function 函数进行处理。
路由匹配的注意点:
- 按照定义的先后顺序进行匹配。
- 请求类型和请求的URL同时匹配成功,才会调用对应的处理函数。
路由的使用
1、最简单的用法:在Express中使用路由最简单的方式,就是把路由挂载到app上,示例如下:
const express = require('express')
//创建web服务器,命名为app
const app = express()
//挂载路由
app.get('/',(req,res)=>{
res.send('Hello World')
})
app.post('/',(req,res)=>{
res.send('POST request')
})
//启动web服务器
app.listen(80,()=>{
console.log('server running at http://127.0.0.1')
})
2、模块化路由
为了方便对路由进行模块化的管理,Express 不建议将路由直接挂载到 app 上,而是推荐将路由抽离为单独的模块。
将路由抽离为单独模块的步骤如下:
- 创建路由模块对应的 .js 文件
- 调用 express.Router() 函数创建路由对象
- 向路由对象上挂载具体的路由
- 使用 module.exports 向外共享路由对象 ⑤ 使用 app.use() 函数注册路由模块。
3、创建路由模块
var express = require('express') //1、导入express
var router = express.Router() //2、创建路由对象
router.got('/user/list',(req,res)=>{ //3、挂载获取用户列表的路由
res.send('Get user list')
})
router.post('/user/add',(req,res)=>{ //4、挂载添加用户的路由
res.send('Get user add')
})
module.exports = router //5、向外导出路由对象
4、注册路由模块
//导入路由模块
const userRouter = require('./router/user.js')
//使用app.use()注册路由模块
app.use(userRouter)
//为路由模块添加前缀
app.use('/api',userRouter)
以上是关于Express的使用方法,路由的匹配与使用的主要内容,如果未能解决你的问题,请参考以下文章
Express实战 - 应用案例- realworld-API - 路由设计 - mongoose - 数据验证 - 密码加密 - 登录接口 - 身份认证 - token - 增删改查API(代码片段