当前位置: 首页 > news >正文

八、express框架解析

文章目录

  • 前言
  • 一、express 路由简介
    • 1、定义
    • 2、基础使用
  • 二、express 获取参数
    • 1、获取请求报文参数
    • 2、获取路由参数
  • 三、express 响应设置
    • 1、一般响应设置
    • 2、其他响应设置
  • 四、express 防盗链
  • 五、express 路由模块化
    • 1、模块中代码如下:
    • 2、主文件中代码如下:


前言

express是一个基于Node.js平台的极简、灵活的WEB应用开发框架。它是一个封装好的工具包,封装了很多功能,便于我们开发WEB应用(HTTP服务)。
express 的作用和 Node.js 内置的 http 模块类似,是专门用来创建Web 服务器的。
express 的本质:就是一个npm 上的第三方包,提供了快速创建Web 服务器的便捷方法。


一、express 路由简介

1、定义

路由确定了应用程序如何响应客户端对特定端点的请求

2、基础使用

一个路由的组成有请求方法路径回调函数组成

// 导入express
const express=require('express');// 创建应用对象
const app=express();// 创建路由
app.get('/home',(req,res)=>{res.end('hello express');
});app.post('/login',(req,res)=>{res.end('login login')
})// 404响应
app.all('*',(req,res)=>{res.end('404 not Found')
})// 监听端口,启动服务
app.listen(3000,()=>{console.log('服务已经启动,端口3000正在监听中....')
})

二、express 获取参数

1、获取请求报文参数

代码如下:

// 创建路由
app.get('/home',(req,res)=>{// 原生操作console.log(req.method);console.log(req.url);console.log(req.httpVersion);console.log(req.headers);// express 操作console.log(req.path);console.log(req.query);console.log(req.ip);// 获取请求头console.log(req.get('host'));
});

2、获取路由参数

代码如下:

// 创建路由
app.get('/:id.html',(req,res)=>{// 获取url路由参数console.log(req.params.id);res.setHeader('content-type','text/html;charset=utf-8');res.end('商品详情')
});

三、express 响应设置

1、一般响应设置

代码如下:

// 创建路由
app.get('/:id.html',(req,res)=>{// 原生响应res.statusCode=404;res.statusMessage='Error';res.setHeader('xxx','yyy');res.write('hello express');res.end('response');// express响应res.status(500);res.set('aaa','bbb');res.send('你好');// 连贯操作res.status(404).set('xxx','yyy').send('你好朋友')
});

2、其他响应设置

app.get('/:id.html',(req,res)=>{// 跳转响应res.redirect('www.baidu.com');// 下载响应res.download(__dirname+'/package.json');// JSON响应res.json({name:'网页',slogon:'你好'})// 响应文件内容res.sendFile(__dirname+'/test.html');
});

四、express 防盗链

代码如下:

app.use((req,res,next)=>{//检测请求头中referer是否为127.0.0.1//获取refererlet referer=req.get('referer');if(referer){// 实例化let url=new URL(referer);// 获取hostnamelet hostname=url.hostname;// 判断if(hostname!=='127.0.0.1'){// 响应404res.status(404).send('<h1>404</h1>')return;}}   next();
})

五、express 路由模块化

1、模块中代码如下:

const express =require('express');
// 创建路由对象
const router=express.Router();
router.get('/admin',(req,res)=>{res.send('....')
});
// 向外暴露模块
module.exports=router;

2、主文件中代码如下:

const 模块名=require('./...')
app.use('模块名')
http://www.lryc.cn/news/61152.html

相关文章:

  • SpringBoot整合接口管理工具Swagger
  • 50+常用工具函数之xijs更新指南(v1.2.3)
  • 【DAY42】vue学习
  • JavaScript小记——事件
  • Windows逆向安全(一)之基础知识(八)
  • PyCharm+PyQt5+pyinstaller打包labelImg.exe
  • JavaScript里实现继承的几种方式
  • 前端:运用HTML+CSS+JavaScript实现迷宫游戏
  • NoSQL数据库简介
  • 面试马铭泽
  • 查看AWS S3的目录
  • 分布式系统概念和设计-操作系统中的支持和设计
  • 【redis】bitmap、hyperloglog、GEO案例
  • 第二章:集合与区间
  • Mysql8.0版本安装
  • 开放式耳机真的比封闭式强很多吗?推荐几款主流的开放式耳机
  • Doris(7):数据导入(Load)之Routine Load
  • linux 安装php8.1 ZipArchive和libzip最新版扩展安装
  • 大数据 | 实验一:大数据系统基本实验 | 熟悉常用的HBase操作
  • Linux command(split)
  • 开放式耳机好用吗,盘点几款口碑不错的开放式耳机
  • 法规标准-ISO 16787标准解读
  • 脑力劳动-英文单词
  • 机器学习中的三个重要环节:训练、验证、测试
  • 机器学习实战:Python基于LDA线性判别模型进行分类预测(五)
  • Java枚举(Enum)
  • 【Python】【进阶篇】二十一、Python爬虫的多线程爬虫
  • Python从入门到精通14天(eval、literal_eval、exec函数的使用)
  • 队列的基本操作(C语言链表实现)初始化,入队,出队,销毁,读取数据
  • 项目支付接入支付宝【沙箱环境】