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

Express--获取URL中携带的查询参数、获取URL中的动态参数、获取URL中的动态参数

Express获取URL中携带的查询参数

通过req.query对象,可以访问到客户端查询字符串形式,发送给服务器参数

  • req.query默认是一个空对象
  • 客户端使用url的地址是?键值对&键值对(?name=js$age=78)等这种查询字符串形式,发送到服务器的参数-----------自动解析到query对象
  • 可以通过req.query对象访问到 
  • req.query.name req.query.age
//导入express
const express=require('express')
//创建web服务器
const app=express()

//监听客户端的GET请求和POST请求,并向客户端响应具体内容
app.get('/user',function(req,res){
    res.send({"name":"zj","age":66,"gender":"男"} )
})
app.post('/user',function(req,res){
    res.send('post请求的响应')
})

app.get('/',function(req,res){
    console.log(req.query)//默认是空对象
    res.send(req.query)//访问客户端的查询字符串
})

//启动服务器.lisen(端口号,(启动成功职之后的回调函数)) 端口号是80可以省略
app.listen(80,()=>{
    console.log('如果启动成功,则客户端为http://127.0.0.1 ,打印这一行输出')
})

http://127.0.0.1

url地址没有传递查询字符串 ,默认是空

http://127.0.0.1/?name=js

url包含查询字符 ,req.query获取客户端的url查询字符串


Express获取URL中的动态参数

通过req.params对象,通过req.params对象,可以访问到URL中,通过:匹配到的动态参数 

:参数名----等于任意地址  默认是一个空对象

 值是匹配过来的 

//导入express
const express=require('express')
//创建web服务器
const app=express()

//监听客户端的GET请求和POST请求,并向客户端响应具体内容
app.get('/user',function(req,res){
    res.send({"name":"zj","age":66,"gender":"男"} )
})
app.post('/user',function(req,res){
    res.send('post请求的响应')
})

app.get('/',function(req,res){
    console.log(req.query)//默认是空对象
    res.send(req.query)//访问客户端的查询字符串
})
//:id是一个动态的参数
app.get('/user:id',function(req,res){
    console.log(req.params)//默认是空对象
    res.send(req.params)//访问客户端的查询字符串
})

//启动服务器.lisen(端口号,(启动成功职之后的回调函数)) 端口号是80可以省略
app.listen(80,()=>{
    console.log('如果启动成功,则客户端为http://127.0.0.1 ,打印这一行输出')
})

注意事项: :参数名称  参数名称不是唯一的 是我们在服务器填写的 、

                动态参数可以有多个,不一定是唯一

//:id是一个动态的参数
app.get('/user:id/:name',function(req,res){
    console.log(req.params)//默认是空对象
    res.send(req.params)//访问客户端的查询字符串
})


Express托管静态资源

express.static(),可以非常方便的创建一个静态资源服务器:例如通过一些代码就可以将public目录下面的图片、css文件、js文件对外开放——app.use(express.static([public(你需要把拿个目录作为静态资源)'))

注意:express在指定的静态目录中查找文件,并对外提供资源的访问录音机,因此存放在静态文件的目录名不会出现在url中

也就是你访问的url地址为

127.0.0.1/images/1.png 或者127.0.0.1/css/1.css或者127.0.0.1/js/1.js(最好使用绝对路径)

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

//对外提供静态资源
app.use(express.static(path.join(__dirname,'../静态资源')))//这里有一个缺省值 是127.0.0.1 根目录

app.listen(80,()=>{
    console.log('服务器启动成功:127.0.0.1')
})


 Express托管多个静态资源目录(多次调用express.static导入文件夹就行)

如果导入的文件有多个,且里面有相同命名的文件, express.static()函数会根据目录添加顺序查找所需要的文件--------如果第一个文件中找到了就不会找下面的一个文件了

 

如何挂载路径前缀

app.use('访问后面资源的时候必须有这个前缀',express.static(path.join(__dirname,'../静态资源1'))) 

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

app.use(express.static(path.join(__dirname,'../静态资源1')))//这里有一个缺省值 是127.0.0.1 根目录
//对外提供静态资源
app.use('/1',express.static(path.join(__dirname,'../静态资源')))//这里有一个缺省值 是127.0.0.1 根目录




app.listen(80,()=>{
    console.log('服务器启动成功:127.0.0.1')
})

包含前缀app.use加内容 

不包含前缀app.use直接写

相关文章:

  • STM32和ESP32- 主讲esp
  • 新库上线 | CnOpenData房地产业工商注册企业基本信息数据
  • SQL 练习
  • 飞书面试经验
  • 2022-09-02 mysql/stonedb-读取Pack数据流程记录
  • 在线搭建自己的网课答案公众号题库系统
  • 计算机毕业设计springboot+vue基本微信小程序的考试系统
  • 在线搭建网课查题公众号
  • 计算机毕业设计springboot+vue基本微信小程序的家装公司管理系统小程序
  • 77.组合 | 40.组合总和II | 39.组合总和
  • 代码坏味道与重构之全局变量
  • 伪原创-伪原创软件-免费伪原创软件
  • Vue - 插值 - 指令 - 过滤器 - 计算属性与监听属性 - 购物车案例
  • 自己的思考
  • 电脑无线5g网卡发现不了网件R7000的Wifi 5g网络
  • 【347天】每日项目总结系列085(2018.01.18)
  • create-react-app做的留言板
  • java2019面试题北京
  • JavaScript设计模式之工厂模式
  • MySQL主从复制读写分离及奇怪的问题
  • php ci框架整合银盛支付
  • 构建工具 - 收藏集 - 掘金
  • 网络应用优化——时延与带宽
  • 为视图添加丝滑的水波纹
  • 我是如何设计 Upload 上传组件的
  • 正则学习笔记
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • !!java web学习笔记(一到五)
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (一)插入排序
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .NET Core跨平台微服务学习资源
  • .NET 常见的偏门问题
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地定义和使用弱事件
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • .NET开源的一个小而快并且功能强大的 Windows 动态桌面软件 - DreamScene2
  • .net快速开发框架源码分享
  • .sh
  • /etc/X11/xorg.conf 文件被误改后进不了图形化界面
  • @SuppressLint(NewApi)和@TargetApi()的区别
  • [ IO.File ] FileSystemWatcher
  • [AI]ChatGPT4 与 ChatGPT3.5 区别有多大
  • [bzoj 3124][sdoi 2013 省选] 直径
  • [HAOI2016]食物链
  • [LLM][FT]大模型Fine-Tuning相关技术0
  • [MySQL FAQ]系列 -- 如何利用触发器实现账户权限审计
  • [MySQL]数据库基础