IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> NODEJS 高级使用 http模块 express框架 路由 web服务器 中间件 -> 正文阅读

[网络协议]NODEJS 高级使用 http模块 express框架 路由 web服务器 中间件

目录

http模块

框架

express 框架

创建web服务器

路由

params传递

路由器

?web服务器

中间件

应用级中间件

路由级中间件

内置中间件


?

http模块

  • req.url? ? ? ? 获取请求的资源,
  • req.method? ? ? ? 获取请求的方法

框架

一套解决方案,

express 框架

Express - 基于 Node.js 平台的 web 应用开发框架 - Express 中文文档 | Express 中文网

属于第三方模块,需要下载安装

npm install express

创建web服务器

// 引入express模块
const express = require("express");
// console.log(express);
// 创建web服务器
const app = express();
// 设置端口
app.listen(3000, () => {
  console.log("服务器启动成功");
});

路由

监听特定的请求,组成,请求的URL,请求的方法,回调函数

  • res.send()设置响应内容并发送
  • res.redirect()设置响应的重定向,跳转另一个URL
  • res.sendFile(__dirname+'/path')响应一个文件,路径必须使用绝对路径

params传递

// 引入express模块
const express = require("express");
// 创建web服务器
const app = express();
// 设置端口
app.listen(3000);
//添加路由,
//params传参需要在路由中设置参数名
app.get("/search/:wd", (req, res) => {
  // 获取params传递的参数
  var obj = req.params;
  res.send("搜索成功"+obj.wd);
  console.log(obj);
});

路由器

1.路由器
//(1)引入express模块
//(2)创建路由器对象
const router = express.Router()
//(3)往路由器对象添加路由
//(4)暴露路由器对象
module.exports = router

?web服务器

//(1)引入路由器模块
//(2)挂载引入的路由器
app.use( URL前缀, 路由器  )

?

中间件

用来拦截对web服务器的请求,中间件分为应用级中间件,路由级中间件,内置中间件,第三方中间件,错误处理中间件

应用级中间件

一个函数,一旦拦截到以后会自动调用这个函数

// 引入express模块
const express = require('express')
const app = express()
app.listen(3000)
function fn(req, res, next) {
  console.log('拦截了对/list请求');
  var obj = req.query
  console.log(obj);
  if (obj.user !== 'root') {
    res.send('请提供管理员账号')
  } else {
    // 否则是管理员,允许继续执行
    next()
  }
}
// 添加中间件,拦截/list的请求
app.use('/list', fn)
app.use('/delete', fn)
app.get('/list', (req, res) => {
  res.send('这是所有用户列表,只有管理员权限')
})
// 添加中间件,拦截删除用户路由,验证用户身份是否为管理员
// 添加删除用户的路由(get /delete),响应删除成功
app.get('/delete', (req, res) => {
  res.send('删除成功')
})
function discount(req, res, next) {
  console.log('拦截对/shopping的请求');
  // 获取get传递的参数
  console.log(req.query);
  // 打9折
  req.query.price *= 0.9
  // 往后执行
  next()
}
app.use('/shopping', discount)
// 添加路由(get /shopping)
app.get('/shopping', (req, res, next) => {
  var obj = req.query
  console.log(obj);
  res.send('商品的价格:' + obj.price)
  // 往后执行
  next()
})
// 后置中间件 
app.use((req, res) => {
  console.log('后置中间件');
})

路由级中间件

当拦截到URL以后,到指定的路由器下查找路由

app.use(拦截的URL,路由器)

内置中间件

express提供的中间件,就是内置中间件

将post传参转为对象

托管静态资源,客户端如果要请求静态资源,不需要通过路由去响应文件,服务器把静态资源放入到一个指定的目录下,让客户端自动去查找

app.use(express.static(‘托管的目录’))

// 引入express模块
const express = require('express')
// 创建web服务器
const app = express()
// 引入用户登录路由器模块
const ur = require("./05_user");
// 设置端口
app.listen(3000)
// 托管静态资源
app.use(express.static('public'))
// 将post传递的参数转换为中间件
app.use(express.urlencoded({
    extended: true
}))
// 编写用户路由器,创建路由器对象,将用户登录的路由添加到该路由器下,暴露路由器对象
// 在web服务器下引入用户路由器,挂在路由器,并添加前缀/user
// /user/mylogin
// 挂载路由器
// 路由添加前缀 /user/mylogin
app.use("/user", ur);
// 引入express模块
const express = require("express");
// 创建路由器对象
const router = express.Router();
// // 路由器添加路由
// // 商品列表(get / list)
// router.get("/mylogin", (req, res) => {
//   res.send("这是商品列表");
// });
// 添加路由,监听按钮提交的请求
router.post('/mylogin', (req, res) => {
    // 获取post传递的参数
    var obj = req.body
    res.send(`登陆成功!欢迎:${obj.user}`)
})
// 将路由器对象暴露出去
module.exports = router;
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-10-22 21:53:47  更:2022-10-22 21:53:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 2:25:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码