Node.js-Express

目录

Express

1. Express

2. Express的使用

3. 监听GET、POST请求

4. 获取URL中携带的参数

5. 获取URL中的动态参数

托管静态资源

1.  express.static()

2. 托管多个静态资源目录

3. 挂载路径前缀

Express路由 

1.Express中的 路由

2. 路由的匹配过程

3. 模块化路由

3. 为路由模块添加前缀


Express

1. Express

express:npm上的一个第三方包,提供了快速创建web服务器的便捷方法。

前端开发当中最常见的两种服务器:

  • Web网站服务器:专门对外提供Web网页资源的服务器
  • API接口服务器:专门对外提供API接口的服务器

使用Express,可以方便、快捷的创建Web网站的服务器或API接口的服务器。

2. Express的使用

1)安装:在项目所处的目录中,运行终端命令

npm install express @4.17.1

2)创建基本的Web服务器

// 1.导入express
const express = require('express')
// 2.创建web服务器
const app = express()
// 3.启动web服务器
app.listen(80, () => {
  console.log('server run at http://127.0.0.1');
})

3. 监听GET、POST请求

// 1.导入express
const express = require('express')
// 2.创建web服务器
const app = express()

// 4.监听客户端的GET和POST请求,并向客户端响应具体的内容
app.get('/user', (req, res) => {
  // 调用express提供的res.send()方法,向客户端响应一个JSON对象
  res.send({name: 'zs', age: 18, gender: '男'})
})
app.post('/user', (req, res) => {
  res.send('请求成功')
})

// 3.启动web服务器
app.listen(80, () => {
  console.log('server run at http://127.0.0.1');
})

结果:

 

4. 获取URL中携带的参数

通过req.query对象,可以访问到客户端通过查询字符串的形式,发送的服务端的参数。

// 1.导入express
const express = require('express')
// 2.创建web服务器
const app = express()

app.get('/', (req, res) => {
  // req.query:默认是一个空的对象,获取客户端发送过来的查询参数
  // 客户端使用 ?name=zs&age=20 这种查询字符串的形式,是发送到服务器的参数 =>通过 req.query对象可以访问
  // req.query.name req.query.age
  console.log(req.query);
})

// 3.启动web服务器
app.listen(80, () => {
  console.log('server run at http://127.0.0.1');
})

结果:

5. 获取URL中的动态参数

通过req.params对象可以访问到URL中通过 匹配的动态参数。

// 1.导入express
const express = require('express')
// 2.创建web服务器
const app = express()

// URL地址值,可以通过 :参数名 的形式,匹配动态参数值
app.get('/user/:id', (req, res) => {
  // req.params:默认是一个空对象,里面存放着通过 : 匹配的动态参数值
  console.log(req.params);
  res.send(req.params)
})

// 3.启动web服务器
app.listen(80, () => {
  console.log('server run at http://127.0.0.1');
})

托管静态资源

1.  express.static()

express提供了一个函数express.static(),通过这个函数可以非常方便的创建一个静态资源服务器。例如,通过以下代码就可以将public目录下的图片、CSS文件、JavaScript文件对外开放访问了。

app.use(express.static('public'))

2. 托管多个静态资源目录

如果想要托管多个静态资源目录,可以多次调用express.static()函数:

访问静态资源文件时,express.static()函数会根据目录的添加顺序查找所需的文件。

app.use(express.static('public'))
app.use(express.static('files'))

3. 挂载路径前缀

如果希望在托管的静态资源访问路径之前,挂载路径前缀,则可以使用如下的方式:

app.use('/public', express.static('public'))

Express路由 

1.Express中的 路由

在Express中,路由指的是客户端的请求服务器处理函数之间的映射关系。

Express中的路由分3部分组成,分别是请求的类型、请求的URL地址、处理函数

2. 路由的匹配过程

每当一个请求到达服务器之后,需要先经过路由的匹配,只有匹配成功之后,才会调用相应的处理函数。

在匹配时,会按照路由的顺序进行匹配,如果请求类型和请求的URL同时匹配成功,则Express会将这次请求,转交给对应的function函数进行处理。

3. 模块化路由

为了方便对路由进行模块化的管理,Express不建议将路由直接挂载到app上,而是推荐将路由抽离为单独的模块。将路由抽离为单独模块的步骤如下:

  1. 创建路由模块对应的.js文件
  2. 调用express.Router()函数创建路由对象
  3. 向路由对象上挂载具体的路由
  4. 使用module.exports向外共享路由对象
  5. 使用app.use()函数注册路由模块

创建路与模块:

// 路由模块
// 1.导入express
const express = require('express');
const res = require('express/lib/response');
// 2.创建路由模块
const router = express.Router()
// 3.挂载具体的路由
router.get('/user/list', (req, res) => {
  res.send('Get user list')
})

router.post('/user', (req, res) => {
  res.send('Add new user')
})
// 4.向外导出路由
module.exports = router

注册路由模块:

const express = require('express')
const app = express()

// 1.导入模块化路由
const router = require('./07-router.js')
// 2.注册模块化路由
app.use(router)

app.listen(80, () => {
  console.log('server run at http://127.0.0.1');
})

结果:

 

3. 为路由模块添加前缀

类似于托管静态资源时,为静态资源统一挂载访问前缀一样,路由模块添加前缀的方式为:

// 1.导入模块化路由
const router = require('./07-router.js')
// 2.注册模块化路由,并添加统一的访问前缀 /api
app.use('/api', router)

结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值