八、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('模块名')
相关文章:
八、express框架解析
文章目录 前言一、express 路由简介1、定义2、基础使用 二、express 获取参数1、获取请求报文参数2、获取路由参数 三、express 响应设置1、一般响应设置2、其他响应设置 四、express 防盗链五、express 路由模块化1、模块中代码如下:2、主文件中代码如下࿱…...
SpringBoot整合接口管理工具Swagger
Swagger Swagger简介 Springboot整合swagger Swagger 常用注解 一、Swagger简介 Swagger 是一系列 RESTful API 的工具,通过 Swagger 可以获得项目的⼀种交互式文档,客户端 SDK 的自动生成等功能。 Swagger 的目标是为 REST APIs 定义一个标…...
50+常用工具函数之xijs更新指南(v1.2.3)
xijs 是一款开箱即用的 js 业务工具库, 聚集于解决业务中遇到的常用的js函数问题, 帮助开发者更高效的进行业务开发. 目前已聚合了50常用工具函数, 接下来就和大家一起分享一下v1.2.3 版本的更新内容. 1. 添加将树结构转换成扁平数组方法 该模块主要由 EasyRo 贡献, 添加内容如…...
【DAY42】vue学习
const routes [ { path: ‘/foo’, component: Foo }, { path: ‘/bar’, component: Bar } ]定义路由的作用是什么 const routes 定义路由的作用是将每一个 URL 请求映射到一个组件,其中 path 表示请求的 URL,component 表示对应的组件。 通过 const…...
JavaScript小记——事件
HTML 事件是发生在 HTML 元素上的事情。 当在 HTML 页面中使用 JavaScript 时, JavaScript 可以触发这些事件。 Html事件 HTML 事件可以是浏览器行为,也可以是用户行为。 以下是 HTML 事件的实例: HTML 页面完成加载HTML input 字段改变…...
Windows逆向安全(一)之基础知识(八)
if else嵌套 这次来研究if else嵌套在汇编中的表现形式,本次以获取三个数中最大的数这个函数为例子,分析if else的汇编形式 求三个数中的最大值 首先贴上代码: #include "stdafx.h"int result0; int getMax(int i,int j,int k)…...
PyCharm+PyQt5+pyinstaller打包labelImg.exe
0 开头 labelImg是一款标注软件,作为一个开源项目,它的源码可以在github上找到。官方仓库地址为: https://github.com/heartexlabs/labelImg 小白安装时的最新版本编译出来的界面长这样: 之前在小白的博客里,也教过…...
JavaScript里实现继承的几种方式
JavaScript 中的继承可以通过以下几种方式来实现: 1、原型链继承:通过将子类的原型对象指向父类的实例来实现继承。这种方式的优点是实现简单,缺点是父类的私有属性和方法子类是不能访问的。 function Parent() {this.name parent;this.ag…...
前端:运用HTML+CSS+JavaScript实现迷宫游戏
最近感到挺无聊的,于是想到了大学期间关于栈的应用知识,于是就写了这篇博客! 运用HTML+CSS+JavaScript实现迷宫游戏 1. 运行结果2. 实现思路3. 参考代码1. 运行结果 前端:做个迷宫玩玩,不会迷路吧! 2. 实现思路 如果有一个迷宫,有入口,也有出口,那么怎样找到从入口到出…...
NoSQL数据库简介
NoSQL代表“不仅是SQL”,指的是一种数据库管理系统,旨在处理大量非结构化和半结构化数据。与使用具有预定义架构的表格格式的传统SQL数据库不同,NoSQL数据库是无模式的,并且允许灵活和动态的数据结构。 NoSQL数据库是必需的&…...
面试马铭泽
为什么报考这个岗位 首先,我对军人从小有崇敬之情,梦想着穿着庄严的军装,更对祖国有强烈的热爱之心。我的大舅是一名现役军人,老舅也曾服过兵役,从他们的谈吐以及教育中,让我对部队一直充满向往之情&#…...
查看AWS S3的目录
要查看AWS S3存储桶(Bucket)的目录,您可以通过AWS管理控制台或AWS CLI(命令行界面)来实现。 在AWS管理控制台中查看: 登录AWS管理控制台。选择S3服务。在S3存储桶列表中选择要查看的存储桶。在对象列表中…...
分布式系统概念和设计-操作系统中的支持和设计
分布式系统概念和设计 操作系统支持 中间件和底层操作系统的关系,操作系统如何满足中间件需求。 中间件需求:访问物理资源的效率和健壮性,多种资源管理策略的灵活性。 任何一个操作系统的目标都是提供一个在物理层(处理器,内存&a…...
【redis】bitmap、hyperloglog、GEO案例
【redis】bitmap、hyperloglog、GEO案例 文章目录 【redis】bitmap、hyperloglog、GEO案例前言一、面试题二、统计的类型聚合统计排序统计问题:思路 二值统计 0和1基数统计 三、hyperloglog1、名词理解UV 独立访客PV 页面浏览量DAU 日活跃用户MAU 月活跃度 2、看需求…...
第二章:集合与区间
1.集合 1.内容概述 1.了解集合的意义2.了解常见集合符号的含义3.云用常见的集合符号来表示集合之间的关系、元素与集合之间的关系2.基本概念 1.集合:把一些确定的对象看成一个整体就形成了一个集合。集合一般使用大写字母A、B、C…来表示2.元素:集合中每一个对象叫做这个集合…...
Mysql8.0版本安装
一,使用yum方式安装 1,配置mysql安装源: sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm2,安装mysql8.0: sudo yum --enablerepo=mysql80-community inst...
开放式耳机真的比封闭式强很多吗?推荐几款主流的开放式耳机
开放式耳机,顾名思义,就是通过骨头振动来传导声音的耳机。相比于传统耳机,它的声音传输更加开放,不会对耳膜造成压迫感,也不会对耳膜旁的内毛细胞造成损害。因此开放式耳机既是运动蓝牙耳机,又是音乐蓝牙…...
Doris(7):数据导入(Load)之Routine Load
例行导入功能为用户提供了义中自动从指定数据源进行数据导入的功能 1 适用场景 当前仅支持kafka系统进行例行导入。 2 使用限制 支持无认证的 Kafka 访问,以及通过 SSL 方式认证的 Kafka 集群。支持的消息格式为 csv 文本格式。每一个 message 为一行,…...
linux 安装php8.1 ZipArchive和libzip最新版扩展安装
1、概述 安装前咱们先看下我本地环境 [rootelk php8]# cat /etc/redhat-release Red Hat Enterprise Linux Server release 7.9 (Maipo) [rootelk php8]# [rootelk php8]# ./bin/php -v PHP 8.1.18 (cli) (built: Apr 17 2023 13:15:17) (NTS) Copyright (c) The PHP Group Z…...
大数据 | 实验一:大数据系统基本实验 | 熟悉常用的HBase操作
文章目录 📚HBase安装🐇安装HBase🐇伪分布式模式配置🐇测试运行HBase🐇HBase java API编程环境配置 📚实验目的📚实验平台📚实验内容🐇HBase Shell 编程命令实现以下指定…...
提升开发效率:Android Studio零障碍IDE本地化配置指南
提升开发效率:Android Studio零障碍IDE本地化配置指南 【免费下载链接】AndroidStudioChineseLanguagePack AndroidStudio中文插件(官方修改版本) 项目地址: https://gitcode.com/gh_mirrors/an/AndroidStudioChineseLanguagePack 开发人员在使用…...
FPGA网络加速入门:拆解Xilinx 7系列GTP与1G/2.5G Ethernet PCS/PMA IP核,搞懂SGMII接口那些事
FPGA网络加速实战:从Xilinx GTP架构到SGMII接口的深度解析 在FPGA高速通信领域,以太网接口设计一直是工程师面临的核心挑战之一。当我们需要在Xilinx 7系列FPGA上实现1G/2.5G以太网功能时,GTP收发器与PCS/PMA IP核的配置往往成为项目成败的关…...
从HTTP到gRPC:etcd v2与v3 API调用差异及Postman实战解析
1. etcd v2与v3 API的核心差异解析 第一次接触etcd时,你可能和我一样被网上的v2教程坑过——照着文档发送HTTP请求却总是返回404错误。这其实是因为etcd v3默认关闭了v2 API支持,而大多数中文教程还在用陈旧的v2示例。让我们先理清这两个版本的本质区别&…...
OFA视觉问答模型惊艳效果:复杂背景中主物体识别与属性描述能力
OFA视觉问答模型惊艳效果:复杂背景中主物体识别与属性描述能力 1. 模型效果惊艳展示 OFA视觉问答模型在复杂场景中的表现令人印象深刻。这个模型能够准确识别图片中的主要物体,并详细描述其属性特征,就像有一个专业的图像分析师在为你解读图…...
阿里语音识别模型WebUI实战:一键部署,会议录音秒变文字稿
阿里语音识别模型WebUI实战:一键部署,会议录音秒变文字稿 1. 引言:语音转文字的高效解决方案 在日常工作中,会议录音转文字是一项耗时又枯燥的任务。传统的人工听写方式不仅效率低下,还容易出错。现在,借…...
Kimi-VL-A3B-Thinking图文问答实操手册:从镜像拉取到Chainlit交互验证
Kimi-VL-A3B-Thinking图文问答实操手册:从镜像拉取到Chainlit交互验证 1. 引言:为什么你需要关注这个图文对话模型? 想象一下,你手头有一张复杂的图表,或者一份满是文字的截图,你想快速知道里面的关键信息…...
UE5伤害系统避坑指南:Damage Type没用好?你的Apply Damage可能白写了
UE5伤害系统深度解析:如何用Damage Type构建高扩展性战斗机制 在虚幻引擎5的游戏开发中,伤害系统是战斗机制的核心支柱。许多开发者习惯性地将注意力集中在Damage Amount这个数值上,却忽视了Damage Type这个能够赋予游戏深度和多样性的强大工…...
Phi-4-mini-reasoning应用场景:密码学协议安全性逻辑推演与攻击路径模拟
Phi-4-mini-reasoning应用场景:密码学协议安全性逻辑推演与攻击路径模拟 1. 模型概述 Phi-4-mini-reasoning是由微软开发的3.8B参数轻量级开源模型,专为数学推理、逻辑推导和多步解题等强逻辑任务设计。该模型主打"小参数、强推理、长上下文、低延…...
【Python】利用Python实现微信公众号文章定时自动发布
1. 微信公众号自动发布的基础原理 很多人可能不知道,微信公众号其实提供了完整的开发者接口,允许我们通过代码来管理内容。这就像给你的公众号装了一个遥控器,不用每天手动登录后台点点戳戳。我最早发现这个功能时,简直像发现了新…...
Pixel Couplet Gen效果展示:乙巳马年像素春联生成惊艳作品集
Pixel Couplet Gen效果展示:乙巳马年像素春联生成惊艳作品集 1. 项目概览 这是一款基于ModelScope大模型驱动的春联生成器。我们创新性地采用夸张的像素游戏风格(Retro Game UI),将传统元素与红白机美学融合,为用户生成独一无二的马年像素春…...
