Express 基本使用(简)

news2024/11/18 3:28:36

         前一篇内容讲到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/113080.html

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

相关文章

贪心法算法

目录 一 算法简介 1)算法案例引入 2)算法思想 3)算法概念 4) 算法求解的问题的特征 5)算法应用 二 算法常见问题 1)活动安排问题(区间调度问题) 今年暑假不AC 2&#xff…

【QT】信号与槽

信号与槽 信号(Signal) 与 槽(Slot) 是Qt中对象之间的通信方式,可以用一个简单的栗子说明:当我们想要开灯时,按下开关发出指令,这就是信号;而灯泡接收到电流变化,发出光亮,这就是响应(槽)。 我…

通过cmd指令创建vue项目

通过cmd指令创建vue项目 基础材料: 已安装node.js 已安装 npm(安装node.js后会自带安装npm) 首先通过node –v和npm –v确保他们都安装了,能够看见版本号就表示ok 然后通过指令安装vue脚手架 npm install -g vue/cli5.0.8 安…

QTableView表格控件区域选择-自绘选择区域

一、概述 最近优化了一个小功能,主要是模仿excel相关的操作,觉得还挺不错的,因此在这里进行了整理,分享给有需要的朋友。今天主要是说一下区域选择这项功能,Qt自带的表格控件是具有区域选择功能的,但是他并…

【Linux技术专题系列】「必备基础知识」一起探索(su、sudo等相关身份提权/身份切换机制)

内容简介 Linux技术专题,主要介绍相关,针对于Linux开发和知识体系的必备开发技能以及基础常识,是开发者必备的知识体系和方法论。 什么是用户、用户组 Linux用户 Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资…

如何制作mp3音频文件?分享制作mp3的简单方法

MP3 对每个人来说都不是一个陌生的名字,因为它是全球排名第一的主流音乐格式。听过上千首MP3歌曲,你知道自己可以制作MP3文件吗?如果答案是否定的,那么您很幸运能找到这篇文章,因为它将通过向您介绍一个免费且简单的解…

产险精算GLM案例2

这是北美产险精算学会CAS网站上的一个案例,对案例略作修改后进行验证。 原始数据是一个简单的分组数据: ClassAOITerrExposureClaims1Low1762Medium1108443High11791054Low2130625Medium2126826High21291207Low3143848Medium31261019High34046 &#x…

从入门到项目实战 - Vue 列表渲染

Vue 列表渲染上一节:《Vue 条件渲染 》| 下一节:《Vue 数据的单向和双向绑定 》jcLee95 邮箱 :291148484163.com CSDN 主页:https://blog.csdn.net/qq_28550263?spm1001.2101.3001.5343 本文地址:https://blog.c…

【Linux技术专题系列】「必备基础知识」一起探索(用户、用户组与文件权限)

内容简介 Linux技术专题,主要介绍相关,针对于Linux开发和知识体系的必备开发技能以及基础常识,是开发者必备的知识体系和方法论。 什么是用户、用户组 Linux用户 Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资…

【OpenFeign】【源码+图解】【五】创建FeignClient接口的代理(上)

【OpenFeign】【源码图解】【四】FeignClient实例工具类ReflectiveFeign 目录6. 创建FeignClient接口的代理6.1 收集方法的元数据6.1.1 方法上基础信息6.1.2 方法所在类的注解信息6.1.3 方法上的注解信息6.1.3.1 uri6.1.3.2 produces6.1.3.3 consumes6.1.3.4 headersRequestMap…

认识 TEE OS

了解 TEE OS 关于本文,是一篇会议纪要,会议主题是《从 Linux Kernel 角度看 TEE》,主讲人是周贺贺。它适用于嵌入式系统开发/驱动开发/内核设计/安全业务设计从业者,目的是让自己掌握 TEE 基本概念,知道大系统软件架构…

目标检测之YOLOv1算法分析

网络结构 卷积层池化层全连接层 输入448∗448448*448448∗448大小的图片 输出7∗7∗307*7*307∗7∗30的张量 30维张量包括20个对象的概率,2个bounding box的置信度及其位置(一个bounding box位置信息需要四个值,两个bounding box总需要8个…

【C/C++】排序讲解,C语言实现各种排序

这篇文章会从思路到实现到分析时间空间复杂度,一次性搞懂各种排序 有帮助的话点个赞收藏一下不迷路啊 如果对时间空间复杂度还不熟悉的请去看 时间 空间复杂度 本文章不会讲堆排序,这部分内容会马上单写一篇博客介绍,和堆的和一些更复杂的问题…

C++基础之核心3

C核心编程 本阶段主要针对C面向对象编程技术做详细讲解,探讨C中的核心和精髓。 1 内存分区模型 C程序在执行时,将内存大方向划分为4个区域 代码区:存放函数体的二进制代码,由操作系统进行管理的全局区:存放全局变量…

海格里斯HEGERLS标准解析|夹抱式四向穿梭车医用行业现代物流解决方案

众所周知,随着当前电商、医用、新零售等领域的快速发展,各大中小企业对于存储的要求越来越高,为让仓储货架、仓储设备、仓储配件等更具有行业的适配性,传统固定的穿梭车已不能满足对不同尺寸料箱的处理。为此,河北沃克…

二叉树题型

目录 二叉数遍历迭代法 1.1前序遍历 1.2中序遍历 1.3后续遍历 二叉树最小深度 二叉树所有路径 中序后序构造二叉树 验证二叉搜素树 二叉数遍历迭代法 1.1前序遍历 前序遍历顺序:根—左—右; 解法1:用栈来进行中间过程处理&#xf…

Babel和devServer | Webpack

文章目录Babel和devServerbabelbabel命令行使用babel-loaderVue源码的打包VSCode对SFC文件的支持vue-loaderdevServerBabel和devServer babel babel命令行使用 babel-loader Vue源码的打包 VSCode对SFC文件的支持 vue-loader devServer

一键可以轻松替换人物背景图,效果出乎意料的好(附 Python 代码)

最近发现 BackgroundMattingV2 项目的一些使用上的小缺陷,但是他却可以做到头发丝精细的抠图效果。我将项目稍微魔改了一下,让他在可以选择单一图片的基础上,可以把抠好的图片贴在自定义的背景图上,这样就可以让照片中的人物&…

使用Tomcat时出现Access Error: 404 -- Not Found的解决办法

当时出现这种情况很迷惑,错误提示如下 突然想到大二上学模电的时候安装过multisim,这个软件的某些不必要的服务占用了8080端口(恼),出现这种情况应该是和Tomcat默认的端口冲突了。 于是就有了解决思路: …

stm32f407VET6 系统学习 day03 通用同步异步收发器

1.同步串行通信 同步通信发送端和接收端必须用共同的时钟源才能保持它们之间的准确同步。同步传输时,每个字 符没有起始位和停止位,它不是用起始位来标志字符的开始,而是用一串特定的二进制序列,称为 同步字符,去通知接…