九、Express 基本使用(简)

news2024/11/16 7:49:53

         前一篇内容讲到Express框架的安装以及对Express项目的目录文件有一定的认识了解之后,使用Express创建了最基本的一个Web服务器,接下来进行对Express框架的一些内容来做一个基本的使用;

创建 Web 服务器

         node 或 nodemon 执行app.js文件;

// app.js
const express = require('express');
const app = express();

app.get('/',function(req,res){
    res.send('WeCome TO Express');
})

app.listen('3000',function(){
    console.log('Server Running ...')
})

监听GET请求

        通过 app.get() 方法 ,监听客户端的GET请求;

app.get('客户端请求URL地址',function(req,res){
    // 处理函数
})

监听POST请求

        通过 app.post() 方法,监听客户端的POST请求;

app.post('客户端请求URL地址',function(req,res){
    // 处理函数
})

响应给客户端

        通过res.send() 方法,将处理好的内容发送给客户端;

res.send()

Postman 测试运行

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

app.get('/',function(req,res){
    res.send('WeCome TO Express');
})

app.get('/user',function(req,res){
    res.send('用户名:admin');
})

app.post('/psd',function(req,res){
    res.send('密码:admin');
})

app.listen('3000',function(){
    console.log('Server Running ...')
})

        下面进行接口测试:使用的是Postman工具测试;

        输入请求的URL地址 http://loacalhost:3000/user 或 http://127.0.0.1:3000/user

        输入请求的URL地址 http://loacalhost:3000/psd 或 http://127.0.0.1:3000/psd

 获取URL中携带的参数 —— req.query

        一般客户端在发送GET请求中会携带一些参数(如id)传给服务器,这时服务器可以通过req.query对象可以访问到携带参数并可以进行后续处理:

//  http://127.0.0.1:3000?id=10001&page=1
app.get('/',function(req,res){
    console.log(req.query)   
})

        由于是GET请求,那么可以在浏览器中的URL地址上后面添加 "?id=10001&page=1"(使用Postman 测试也可以 ),如下:

        当然也可以只取访问携带参数中的某一个如下:req.query.id 或 req.query.page

app.get('/',function(req,res){
    console.log(req.query);
    console.log(req.query.id);
    console.log(req.query.page);   
})

 获取URL的动态参数 —— req.params

        在请求中携带动态参数的场景也是非常常见的,比如在一个图书网站,通过点击不同书籍的id能够打开不同书籍,然后服务器通过请求的URL所携带的不同的id做出处理再将结果响应给客户端;那么服务器可以通过req.params访问到请求URL中的动态参数;通过:id来匹配动态参数;

app.get('/book/:id',function(req,res){
    res.send('已请求');
    console.log(req.params);
})

Postman 测试:

 静态资源托管

        有时候需要在服务器中存在一些静态资源,这时可以通过express提供的一个express.static()函数来创建一个静态资源服务器;下面来将public文件夹下的资源进行对外开放访问操作:

        如果是全局安装Express的话就有public文件夹,局部安装Express的话需要自己创建;下面在public文件下面可存放一些资源比如images下的img或一些css,js,json等等一些数据;

// 表示public文件夹对外提供访问
app.use(express.static('public'));

        下面通过浏览器来对其进行资源访问:http://127.0.0.1:3000/images/01.jpg 

        注:Express 在指定的静态目录中去查找文件,并对外提供资源的访问路径,但不会将资源的目录显示在URL中;在访问静态资源文件时,express.static() 函数会根据目录的添加顺序查找所需的文件。

挂载路径前缀

        希望托管的静态资源路径之前有挂载路径的前缀;如上面通过app.use(express.static('public')) 将 public文件夹 下的资源供外部进行访问,但不会将public这个目录显示在URL中,但如果想将public添加上去或者换成另外一个前缀挂载在路径之中可以这么操作:

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

        现在通过以下这个路径才能访问到:http://127.0.0.1:3000/public/images/01.jpg  

        以上就是对Express框架的一些基本使用!感谢大家的支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/113951.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

踩坑了、踩到一个特别无语的常识坑

大家好 踩坑了啊,又踩坑了啊! 这次踩到一个特别无语的常识坑。知道真相的那一刻,人就是整个麻掉。 先上个代码: private static double calculate(double a, int b) {return a / b; } 复制代码 你先别问为什么计算不用 BigDec…

RxJS初认识

概念: RxJS的运行就是Observable和Observer之间的互动游戏。 Observable就是“可以被观察的对象”,即“可被观察者”,而Observer就是‘观察者’,连接两者的桥梁就是Observable对象的函数subscribe。 RxJS中的数据流就是Observable…

第二十三章 数论——质数(1)(超级详细的推导)

第二十三章 数论——质数一、什么是质数二、质数的判断1、试除法(朴素版)2、试除法(优化版)三、分解质因数1、什么是质因数2、算术基本定理3、分解质因数(1)问题(2)思路(…

RepNAS: 基于NAS的结构重参数化技术

1. 介绍 在过去几年里,NAS技术取得了长足进展。然而,由于搜索约束与实际推理之间的差异导致高效网络搜索仍极具挑战性。为搜索一个具有高性能、低推理延迟的模型,已有方案往往在算法中添加计算复杂度约束。然而,推理速度会受多种…

【强化学习笔记】马尔可夫过程、马尔可夫奖励过程

文章目录1.马尔可夫过程1.1.随机过程1.2.马尔可夫性质1.3.马尔可夫过程2. 马尔可夫奖励过程2.1.回报2.2.价值函数3.马尔可夫决策过程1.马尔可夫过程 马尔可夫过程(Markov process) 指具有 马尔可夫性质 的 随机过程 ,也被称为马尔可夫链&…

C++GUI之wxWidgets(4)-编写应用涉及的类和方法(2)-wxDialog,wxCloseEvent

目录wxDialog包含类继承具体描述模态和无模态支持样式此类发出的事件wxWindow:&#xff1a;Close()wxCloseEvent具体描述使用此类的事件wxDialog 包含 #include <wx/dialog.h>类继承 描述主 具体描述 对话框是一个带有标题栏的窗口&#xff0c;有时还有一个系统菜单…

python-多线程、网络编程、正则表达式

目录 闭包 多线程 主线程 线程阻塞 同步锁 网络编程 正则表达式 re.match函数 re.search方法 re.match与re.search的区别 re.findall()方法 正则表达式的特殊规则 闭包 account0 def atm(num,flag):global accountif flag:accountnumaccountprint(account)else:acco…

免费开源的高精度OCR文本提取,支持 100 多种语言、自动文本定位和脚本检测,几行代码即可实现离线使用(附源码)

免费开源的高精度OCR文本提取,支持 100 多种语言、自动文本定位和脚本检测,几行代码即可实现离线使用(附源码)。 要从图像、照片中提取文本吗?是否刚刚拍了讲义的照片并想将其转换为文本?那么您将需要一个可以通过 OCR(光学字符识别)识别文本的应用程序。 图片文字识…

html圣诞树代码

一、前言 想做一个圣诞树&#xff0c;通过html实现了下 二、效果展示 三、代码 <!DOCTYPE html> <html> <head> <meta http-equiv"Content-Type" content"text/html; charsetutf-8" /> <meta name"viewport" cont…

245. 你能回答这些问题吗——线段树

给定长度为 N 的数列 A&#xff0c;以及 M 条指令&#xff0c;每条指令可能是以下两种之一&#xff1a; 1 x y&#xff0c;查询区间 [x,y] 中的最大连续子段和&#xff0c; 2 x y&#xff0c;把 A[x] 改成 y。 对于每个查询指令&#xff0c;输出一个整数表示答案。 输入格式…

RabbitMQ 第二天 高级 9 RabbitMQ 集群搭建 9.3 集群管理 9.5 负载均衡-HAProxy

RabbitMQ 【黑马程序员RabbitMQ全套教程&#xff0c;rabbitmq消息中间件到实战】 文章目录RabbitMQ第二天 高级9 RabbitMQ 集群搭建9.3 集群管理9.5 负载均衡-HAProxy9.5.1 安装HAProxy9.5.2 配置HAProxy第二天 高级 9 RabbitMQ 集群搭建 9.3 集群管理 rabbitmqctl join_cl…

MariaDB上市:MySQL之父奋斗13年终敲钟 要写代码写到100岁

雷递网 雷建平 12月24日云数据库公司MariaDB日前与特殊目的公司Angel Pond Holdings完成合并&#xff0c;并在纽交所上市&#xff0c;新公司更名为MariaDB。MariaDB是2022年初与Angel Pond Holdings达成合并协议&#xff0c;对新公司的作价为6.72亿美元。MariaDB是MySQL之父Mic…

【技术应用】java基于UNIX域套接字(unix domain socket)连接redis

【技术应用】java基于UNIX域套接字unix domain socket连接redis一、前言二、实现思路三、代码实现1、java socket基于redis.sock连接redis2、Lettuce框架基于redis.sock连接redis一、前言 在公司工作中经常涉及到一些中小型项目&#xff0c;这些项目都会涉及使用redis数据库&a…

Redis5.0+——持久化——RDBAOF

Redis持久化-RDB 1.实现目标&#xff1a; 在redis持久化时&#xff0c;持久化dump.rdb文件放入到redis解压目录下的data目录下的6379目录下 2.前期准备 1.在redis-5.0.3解压目录下新建data数据目录 2.编辑前面配置的/etc/redis.conf配置文件 修改持久化文件位置 (1) 进入安…

MySQL热备之PXB备份与恢复

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&#x1f61…

【语音处理】使用块反射器的基于DFT的系统中用于旁瓣抑制的正交预编码(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

Java中的多线程(下)

作者&#xff1a;~小明学编程 文章专栏&#xff1a;JavaEE 格言&#xff1a;热爱编程的&#xff0c;终将被编程所厚爱。 目录 多线程案例 单例模式 饿汉模式 懒汉模式 阻塞式队列 为什么要引入阻塞队列 Java中的阻塞队列 模拟实现阻塞队列 定时器 标准库中的定时器 …

docker的虚悬镜像是什么?

虚悬镜像是什么? 答:仓库名、标签都是<none>的镜像,俗称:dangling image 我们使用Dockerfile写一个: 1:编写 from ubuntu CMD echo action is success2:构建 docker build . 注意没有 -t 产生原因: 1:构建时候因为编写错误导致 2:删除的时候 对于这样…

数据溢出的二进制原理

char 类型的数据占一个字节&#xff0c;一个字节有 8 位&#xff0c;最高位为符号位&#xff0c;1表示负数&#xff0c;0表示正数。在计算机中&#xff0c;数据用补码表示&#xff0c;正数的补码是它本身&#xff0c;负数的补码为 “符号位不变&#xff0c;其他位取反后再加1”…

Spring Cloud 系列之OpenFeign:(4)集成OpenFeign

目录 传送门 服务间调用 集成OpenFeign 说明文档 添加pom依赖 启用OpenFeign 声明OpenFeign接口 改造远程调用 定义OpenFeign接口 测试OpenFeign调用 传送门 Spring Cloud Alibaba系列之nacos&#xff1a;(1)安装 Spring Cloud Alibaba系列之nacos&#xff1a;(2)单…