uni-app发起请求以及请求封装,上传及下载功能(六)

文章目录

  • 一、发起网络请求
    • 1.使用及封装
    • 2. https 请求配置自签名证书
    • 3.拦截器
  • 二、上传下载
    • 1.上传 uni.uploadFile(OBJECT)
    • 2. 下载 uni.downloadFile(OBJECT)


一、发起网络请求

uni-app中内置的uni.request()已经很强大了,简单且好用。为了让其更好用,同时支持拦截器,支持Promise 写法,特对其进行封装。同时支持H5和小程序环境,

uni.request()是一个统一的网络请求接口,支持HTTP和HTTPS协议,可以处理GET、POST等请求方法。这个API提供了基本的HTTP请求功能,可以满足大部分应用的网络通信需求。
由于uni-app是基于Vue.js的,可以使用一些适用于前端的JavaScript网络库如axios 第三方库,支持Promise API,有丰富的拦截器、配置选项和错误处理。

1.使用及封装

使用uni.request()的步骤如下:

  1. 在需要发起网络请求的页面中引入uni.request()方法。
  2. 调用uni.request()方法,并传入相应的参数,包括请求地址、请求方法、请求头部和请求数据等。
  3. 监听请求的成功和失败回调,并在回调函数中处理返回的数据。
    参数说明
参数名类型必填默认值说明平台差异说明
urlString开发者服务器接口地址
dataObject/String/ArrayBuffer请求的参数App 3.3.7 以下不支持 ArrayBuffer 类型
headerObject设置请求的 header,header 中不能设置 RefererApp、H5端会自动带上cookie,且H5端不可手动修改
methodStringGET有效值详见下方说明
timeoutNumber60000超时时间,单位 msH5(HBuilderX 2.9.9+)、APP(HBuilderX 2.9.9+)、微信小程序(2.10.0)、支付宝小程序
dataTypeStringjson如果设为 json,会对返回的数据进行一次 JSON.parse,非 json 不会进行 JSON.parse
responseTypeStringtext设置响应的数据类型。合法值:text、arraybuffer支付宝小程序不支持
sslVerifyBooleantrue验证 ssl 证书仅App安卓端支持(HBuilderX 2.3.3+),不支持离线打包
deferBooleanfalse控制当前请求是否延时至首屏内容渲染后发送百度小程序 3.310.11+
successFunction收到开发者服务器成功返回的回调函数
failFunction接口调用失败的回调函数
completeFunction接口调用结束的回调函数(调用成功、失败都会执行)
  • method 有效值:method有效值必须大写,每个平台支持的method有效值不同
  • success 返回参数说明
参数类型说明
dataObject/String/ArrayBuffer开发者服务器返回的数据
statusCodeNumber开发者服务器返回的 HTTP 状态码
headerObject开发者服务器返回的 HTTP Response Header
cookiesArray<string>开发者服务器返回的 cookies,格式为字符串数组
  • data 数据说明
    最终发送给服务器的数据是 String 类型,如果传入的 data 不是 String 类型,会被转换成 String。转换规则如下:

    • 对于 GET 方法,会将数据转换为 query string。例如 { name: ‘name’, age: 18 } 转换后的结果是 name=name&age=18。
    • 对于 POST 方法且 header[‘content-type’] 为 application/json 的数据,会进行 JSON 序列化。
    • 对于 POST 方法且 header[‘content-type’] 为 application/x-www-form-urlencoded 的数据,会将数据转换为 query string。
    /**
     * 请求组件封装
     * url 请求地址
     * data 请求参数
     * method 请求的方法 默认get请求
     * contentType 请求内容类型 1 json 强求 2 form表单请求
    */
    
    function request({url, data, method='GET', contentType = '1'}) {
    	let header = {
    		'content-type': contentType == 1 ? 'application/json' : 'application/x-www-form-urlencoded'
    	}
    	let baseUrl = 'http://192.168.0.78';
    	console.log(baseUrl + url)
    	return new Promise((resolve, reject) => {
    		uni.request({
    			url: baseUrl + url,
    			data,
    			method,
    			header,
    			success: (res) => {
    				console.log(res)
    				if (res.statusCode == 200) {
    					resolve(res.data)
    				} else if (res.statusCode == 401) {
    					uni.showToast({
    						icon: 'none',
    						title: '未登录或登录状态已超时',
    						duration:1500,
    					})
    				} else if (res.statusCode == 405) {
    					uni.showToast({
    						icon: 'none',
    						title: '请求方法错误',
    						duration:1500,
    					})
    				} else {
    					uni.showToast({
    						icon: 'none',
    						title: '请求错误' + res.statusCode,
    						duration:1500,
    					})
    				}
    			},
    		})
    	})
    }
    

    在这里插入图片描述

  • 返回值
    如果希望返回一个 requestTask 对象,需要至少传入 success / fail / complete 参数中的一个

    var requestTask = uni.request({
    	url: 'http://192.168.0.18:8080/request', //仅为示例,并非真实接口地址。
    	complete: ()=> {}
    });
    requestTask.abort();
    

    如果没有传入 success / fail / complete 参数,则会返回封装后的 Promise 对象
    通过 requestTask,可中断请求任务。
    requestTask 对象的方法列表

    方法参数说明
    abort中断请求任务
    offHeadersReceived取消监听 HTTP Response Header 事件,仅微信小程序平台支持
    onHeadersReceived监听 HTTP Response Header 事件。会比请求完成事件更早,仅微信小程序平台支持
    const requestTask = uni.request({
    	url: 'http://192.168.0.18:8080/request', //仅为示例,并非真实接口地址。
    	data: {
            name: 'name',
            age: 18
    	},
    	success: function(res) {
    		console.log(res.data);
    	}
    });
    
    // 中断请求任务
    requestTask.abort()
    

2. https 请求配置自签名证书

uni.configMTLS(OBJECT)
https 请求配置自签名证书,只有app支持,其他都不支持

  • OBJECT 参数说明
参数类型必填说明
certificatesArray<certificate>certificates 为数组,支持为多个域名配置自签名证书
successFunction(callbackObject)接口调用成功的回调函数
failFunction(callbackObject)接口调用失败的回调函数
completeFunction接口调用结束的回调函数(调用成功、失败都会执行)
  • certificate 参数说明 证书配置项
参数类型必填说明
hoststring对应请求的域名(注意:不要协议部分)
clientstring客户端证书(服务器端需要验证客户端证书时需要配置此项,格式要求请参考下面的证书格式说明,注意 iOS 平台客户端证书只支持 .p12 类型的证书。HarmonyOS Next 上是证书路径)
keyPathstring证书秘钥的路径,只支持 HarmonyOS Next (HBuilderX 4.31)
clientPasswordstring客户端证书对应的密码(客户端证书存在时必须配置此项。HarmonyOS Next 上是证书秘钥的密码)
serverArray<string>服务器端证书(客户端需要对服务器端证书做校验时需要配置此项,通常使用自签名证书时才需要配置,格式要求请参考下面的证书格式说明,注意 iOS 平台服务器端证书只支持 .cer 类型的证书,不仅仅验证公钥,还要验证整个证书链,请保证证书的完整性。HarmonyOS Next 不支持)
  • 证书格式说明
    证书支持两种格式,文件格式和 Base64字符串格式
    1. 文件格式说明:可将证书文件放到工程的 ‘static’ 目录中(当然也可以通过请求下载到本地),然后填写文件路径,
    2. Base64String格式说明:将证书文件的二进制转换为 Base64String 字符串,然后在字符串前面添加’data:cert/pem;base64,'前缀,示例:‘data:cert/pem;base64,xxx’ xxx 代表真实的证书 base64String
uni.configMTLS({
    certificates: [{
        'host': 'www.baidu.com',
        'client': '/static/client.p12',
        'clientPassword': '123456789',
        'server': ['/static/server.cer'],
    }],
    success ({code}) {
    	// 类型是Number	成功返回 0,失败返回相应 code 码
    }
});

3.拦截器

uni.addInterceptor(STRING, OBJECT)

  • STRING 参数说明
    需要拦截的api名称,如:uni.addInterceptor(‘request’, OBJECT) ,将拦截 uni.request()


    仅支持异步接口,如:uni.setStorage(OBJECT),暂不支持同步接口如:uni.setStorageSync(KEY,DATA)
    uniCloud请求云端接口时(callFunction、uploadFile等)也会使用uni.request发送请求,请确保拦截器内不错误的处理此类请求

  • OBJECT 参数说明

参数名类型必填默认值说明平台差异说明
invokeFunction拦截前触发
returnValueFunction方法调用后触发,处理返回值
successFunction成功回调拦截
failFunction失败回调拦截
completeFunction完成回调拦截
uni.addInterceptor('request', {
  invoke(args) {
    // 在请求发送之前的处理
    console.log('请求拦截:', args);
    // 可以修改args中的参数
    // 例如: 添加token
    // args.header = args.header || {};
    // args.header['Authorization'] = 'Bearer ' + getToken();
  },
  success(args) {
    // 在请求成功之后的处理
    console.log('请求成功拦截:', args);
  },
  fail(err) {
    // 在请求失败之后的处理
    console.error('请求失败拦截:', err);
  },
  complete() {
    // 在请求结束之后的处理
    console.log('请求结束拦截');
  }
});
 uni.addInterceptor({
  returnValue(args) {
    // 只返回 data 字段
    return args.data
  }
})

  • 删除拦截器
    uni.removeInterceptor(STRING)
    STRING:需要删除拦截器的api名称
// 移除请求拦截器
uni.removeInterceptor('request');

二、上传下载

1.上传 uni.uploadFile(OBJECT)

将本地资源上传到开发者服务器,客户端发起一个 POST 请求,其中 content-type 为 multipart/form-data。 如页面通过 uni.chooseImage 等接口获取到一个本地资源的临时文件路径后,可通过此接口将本地资源上传到指定服务器。

注:
1:在各个小程序平台运行时,网络相关的 API 在使用前需要配置域名白名单。
2::App支持多文件上传,微信小程序只支持单文件上传,传多个文件需要反复调用本API。所以跨端的写法就是循环调用本API。
3:网络请求的 超时时间 可以统一在 manifest.json 中配置 networkTimeout。
4:支付宝小程序开发工具上传文件返回的http状态码为字符串形式,支付宝小程序真机返回的状态码为数字形式

  • OBJECT参数说明

    参数名类型必填说明平台差异说明
    urlString开发者服务器 url
    filesArray是(files和filePath选其一)需要上传的文件列表。使用 files 时,filePath 和 name 不生效。App、H5( 2.6.15+)
    fileTypeString开发者服务器 url仅支付宝小程序,且必填。
    fileFile要上传的文件对象。仅H5(2.6.15+)支持
    filePathString是(files和filePath选其一)要上传文件资源的路径。
    nameString文件对应的 key , 开发者在服务器端通过这个 key 可以获取到文件二进制内容
    headerObjectHTTP 请求 Header, header 中不能设置 Referer。
    timeoutString超时时间,单位 msH5(HBuilderX 2.9.9+)、APP(HBuilderX 2.9.9+)、微信小程序、支付宝小程序、抖音小程序、快手小程序
    formDataObjectHTTP 请求中其他额外的 form data
    successString接口调用成功的回调函数
    failString接口调用失败的回调函数
    completeString接口调用结束的回调函数(调用成功、失败都会执行)
    // html
    <button @click="handleUpload">上传文件</button>
    // js
     uni.chooseImage({
    	  success: (chooseImageRes) => {
    			console.log(chooseImageRes)
    	  		const tempFilePaths = chooseImageRes.tempFilePaths;
    	  		uni.uploadFile({
    	  			url: 'http://192.168.0.18:8080/jeecg-boot/sys/common/uploadImagea', //仅为示例,非真实的接口地址
    	  			filePath: tempFilePaths[0],
    	  			name: 'file',
    	  		    formData: {
    	  		      'user': 'test'
    	  			},
    	  		 	success: (uploadFileRes) => {
    	  		 		console.log(uploadFileRes.data);
    	  			}
    	  		 });
    	  	}
    	  });
    

    console.log(chooseImageRes)打印心疼

  • 返回值
    如果希望返回一个 uploadTask 对象,需要至少传入 success / fail / complete 参数中的一个

    var uploadTask = uni.uploadFile({
    	url: 'http://192.168.0.18:8080/jeecg-boot/sys/common/uploadImagea', //仅为示例,并非真实接口地址。
    	complete: ()=> {}
    });
    uploadTask.abort();
    

    uploadTask如果没有传入 success / fail / complete 参数,则会返回封装后的 Promise 对象
    在这里插入图片描述
    通过uploadTask ,可以监听上传进度变化事件,以及取消上传任务
    uploadTask 对象的方法列表

    方法参数说明
    abort中断上传任务
    onProgressUpdatecallback监听上传进度变化
    onHeadersReceivedcallback监听 HTTP Response Header 事件。会比请求完成事件更早,仅微信小程序平台支持
    offProgressUpdatecallback取消监听上传进度变化事件,仅微信小程序平台支持
    offHeadersReceivedcallback取消监听 HTTP Response Header 事件,仅微信小程序平台支持
     let uploadTask =	uni.uploadFile({
    	url: 'http://192.168.0.18:8084/jeecg-boot/sys/common/uploadImagea', //仅为示例,非真实的接口地址
    	complete: ()=> {}
    });
    console.log(uploadTask)
    uploadTask.onProgressUpdate((res) => {
    	console.log(res)
    	console.log('上传进度' + res.progress);
    	console.log('已经上传的数据长度' + res.totalBytesSent);
    	console.log('预期需要上传的数据总长度' + res.totalBytesExpectedToSend);
    
    	// 测试条件,取消上传任务。
    	if (res.progress > 50) {
    		uploadTask.abort();
    	}
    });
    

    在这里插入图片描述
    注:后面会有文章对uni.chooseImage的介绍

2. 下载 uni.downloadFile(OBJECT)

下载文件资源到本地,客户端直接发起一个 HTTP GET 请求,返回文件的本地临时路径。

注:
在各个小程序平台运行时,网络相关的 API 在使用前需要配置域名白名单。
在h5上是跨域的,用户需要处理好跨域问题。
网络请求的 超时时间 可以统一在 manifest.json 中配置 networkTimeout。

  • OBJECT 参数说明
参数名类型必填说明平台差异说明
urlString下载资源的 url
headerObjectHTTP 请求 Header, header 中不能设置 Referer。
timeoutString超时时间,单位 msH5、APP、微信小程序、支付宝小程序、抖音小程序、快手小程序
filePathString指定文件下载后存储的路径 (本地路径)小程序端支持(微信IOS小程序保存到相册需要添加此字段才可以正常保存)
successString下载成功后以 tempFilePath 的形式传给页面,res = {tempFilePath: ‘文件的临时路径’}
failString接口调用失败的回调函数
completeString接口调用结束的回调函数(调用成功、失败都会执行)

注: 文件的临时路径,在应用本次启动期间可以正常使用,如需持久保存,需在主动调用 uni.saveFile,才能在应用下次启动时访问得到。

  • success 返回参数说明
参数类型说明平台差异说明
tempFilePathString临时文件路径,下载后的文件会存储到一个临时文件微信小程序、支付宝小程序、百度小程序、抖音小程序、飞书小程序
statusCodeNumber开发者服务器返回的 HTTP 状态码微信小程序、QQ小程序、百度小程序、抖音小程序、飞书小程序
apFilePathString下载文件保存的路径(本地临时文件)。入参未指定 filePath 的情况下可用支付宝小程序
filePathString用户文件路径 (本地路径)。传入 filePath 时会返回,跟传入的 filePath 一致微信小程序、支付宝小程序、抖音小程序、飞书小程序
fileContentBuffer文件内容QQ小程序
uni.downloadFile({
	url: 'http://192.168.0.18:8084/jeecg-boot/sys/common/file/test', //仅为示例,并非真实的资源
	success: (res) => {
		if (res.statusCode === 200) {
			console.log('下载成功');
		}
	}
});
  • 返回值
    如果希望返回一个 downloadTask 对象,需要至少传入 success / fail / complete 参数中的一个。

    var downloadTask = uni.downloadFile({
    	url: 'https://www.example.com/file/test', //仅为示例,并非真实接口地址。
    	complete: ()=> {}
    });
    downloadTask.abort();
    

    如果没有传入 success / fail / complete 参数,则会返回封装后的 Promise 对象
    通过 downloadTask,可监听下载进度变化事件,以及取消下载任务。

  • downloadTask 对象的方法列表

    方法参数说明
    abort中断下载任务
    onProgressUpdatecallback监听下载进度变化
    onHeadersReceivedcallback监听 HTTP Response Header 事件,会比请求完成事件更早,仅微信小程序平台支持
    offProgressUpdatecallback取消监听下载进度变化事件,仅微信小程序平台支持
    offHeadersReceivedcallback取消监听 HTTP Response Header 事件,仅微信小程序平台支持
    const downloadTask = uni.downloadFile({
    	url: 'http://192.168.0.18:8084/jeecg-boot/sys/common/download', //仅为示例,并非真实的资源
    	success: (res) => {
    		if (res.statusCode === 200) {
    			console.log('下载成功');
    		}
    	}
    });
    
    downloadTask.onProgressUpdate((res) => {
    	console.log('下载进度' + res.progress);
    	console.log('已经下载的数据长度' + res.totalBytesWritten);
    	console.log('预期需要下载的数据总长度' + res.totalBytesExpectedToWrite);
    
    	// 满足测试条件,取消下载任务。
    	if (res.progress > 50) {
    		downloadTask.abort();
    	}
    });
    

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SLAM定位总结

文章目录 一、激光定位1.A-LOAM &#xff08;2018&#xff09;2.F-LOAM &#xff08;2021&#xff09;3.CT-ICP &#xff08;2022&#xff09;3.DLO:Fast Localization with Dense Point Clouds &#xff08;2022&#xff09;4.kiss-ICP :In Defense of Point-to-Point ICP Sim…

大端存储和小端存储

大端存储和小端存储 在计算机系统中&#xff0c;数据在内存中的存储方式并不是唯一的。对于多字节的数据类型&#xff08;如 int、float 等&#xff09;&#xff0c;计算机可以以不同的方式在内存中存储它们。这些存储方式通常分为两种&#xff1a;大端存储&#xff08;Big-En…

【数据结构二叉树】C非递归算法实现二叉树的先序、中序、后序遍历

引言: 遍历二叉树&#xff1a;指按某条搜索路径巡访二叉树中每个结点&#xff0c;使得每个结点均被访问一次&#xff0c;而且仅被访问一次。 除了层次遍历外&#xff0c;二叉树有三个重要的遍历方法&#xff1a;先序遍历、中序遍历、后序遍历。 1、递归算法实现先序、中序、后…

【LeetCode】移除链表中等于设定值的元素、反转链表

主页&#xff1a;HABUO&#x1f341;主页&#xff1a;HABUO &#x1f31c;有时候世界虽然是假的&#xff0c;但并不缺少真心对待我们的人&#x1f31b; 1. 移除链表中设定值的元素 题目&#xff1a;给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所…

程序员日志之DNF手游1023版本活动补充

目录 传送门正文日志1、概要2、正文 传送门 SpringMVC的源码解析&#xff08;精品&#xff09; Spring6的源码解析&#xff08;精品&#xff09; SpringBoot3框架&#xff08;精品&#xff09; MyBatis框架&#xff08;精品&#xff09; MyBatis-Plus SpringDataJPA SpringClo…

macOS开发环境配置与应用开发教程

macOS开发环境配置与应用开发教程 引言 macOS是一个强大的操作系统&#xff0c;广泛应用于软件开发&#xff0c;尤其是iOS和macOS应用开发。本文将详细介绍如何配置macOS开发环境&#xff0c;并通过实例演示如何进行应用开发。希望通过这篇文章&#xff0c;帮助读者快速上手m…

提高交换网络可靠性之认识STP根桥与端口角色

转载请注明出处 该实验旨在学习如何选举根桥与识别端口角色。 1.三台交换机按要求连线&#xff0c;改名&#xff0c;分别为S1&#xff0c;S2&#xff0c;S3&#xff0c;以S1为例&#xff1a; 2.在S1上配置优先级为28672 同理&#xff0c;在交换机S2和S3上配置其优先级为32768&…

基于大数据的热门旅游景点数据分析系统的设计与实现

作者主页&#xff1a;编程千纸鹤 作者简介&#xff1a;Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验&#xff0c;被多个学校常年聘为校外企业导师&#xff0c;指导学生毕业设计并参…

【大语言模型】ACL2024论文-03 MAGE: 现实环境下机器生成文本检测

【大语言模型】ACL2024论文-03 MAGE: 现实环境下机器生成文本检测 目录 文章目录 【大语言模型】ACL2024论文-03 MAGE: 现实环境下机器生成文本检测目录摘要研究背景问题与挑战如何解决核心创新点算法模型实验效果&#xff08;包含重要数据与结论&#xff09;主要参考工作后续优…

A012-基于Spring Boot的私房菜定制上门服务系统的设计与实现

摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统私房菜定制上门服务系统信息管理难度大&#xff0c;容错率…

ios 快捷指令扩展(Intents Extension)简单使用 swift语言

本文介绍使用Xcode15 建立快捷指令的Extension&#xff0c;并描述如何修改快捷指令的IntentHandler&#xff0c;带参数跳转主应用&#xff1b;以及展示多个选项的快捷指令弹框(配置intentdefinition文件)&#xff0c;点击选项带参数跳到主应用的方法 创建快捷指令 快捷指令是…

【MacOS实操】如何基于SSH连接远程linux服务器

MacOS上远程连接linux服务器&#xff0c;可以使用ssh命令pem秘钥文件连接。 一、准备pem秘钥文件 如果已经有pem文件&#xff0c;则跳过这一步。如果手上有ppk文件&#xff0c;那么需要先转换为pem文件。 macOS 的默认 SSH 客户端不支持 PPK 格式&#xff0c;你需要将 PPK 文…

Puppeteer点击系统:解锁百度流量点击率提升的解决案例

在数字营销领域&#xff0c;流量和搜索引擎优化&#xff08;SEO&#xff09;是提升网站可见性的关键。我开发了一个基于Puppeteer的点击系统&#xff0c;旨在自动化地提升百度流量点击率。本文将介绍这个系统如何通过模拟真实用户行为&#xff0c;优化关键词排名&#xff0c;并…

Golang | Leetcode Golang题解之第524题通过删除字母匹配到字典里最长单词

题目&#xff1a; 题解&#xff1a; func findLongestWord(s string, dictionary []string) (ans string) {m : len(s)f : make([][26]int, m1)for i : range f[m] {f[m][i] m}for i : m - 1; i > 0; i-- {f[i] f[i1]f[i][s[i]-a] i}outer:for _, t : range dictionary …

019集——获取CAD图中多个实体的包围盒(CAD—C#二次开发入门)

如下图所示&#xff0c;获取多个实体的最大包围盒&#xff0c;用红色线表示&#xff1a; 也可单独选圆的包围盒 部分代码如下&#xff1a; using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.Geometry; using A…

【快速上手】pyspark 集群环境下的搭建(Yarn模式)

目录 前言&#xff1a; 一、安装步骤 安装前准备 1.第一步&#xff1a;安装python 2.第二步&#xff1a;在bigdata01上安装spark 3.第三步&#xff1a;同步bigdata01中的spark到bigdata02和03上 二、启动 三、可打开yarn界面查看任务 前言&#xff1a; 上一篇介绍的是…

sublime python出现中文乱码怎么办

一、乱码现象 利用sublime自带编译快捷方式ctrlB会出现中文乱码的情况。 print("没有循环数据!") print("完成循环!") 二、寻找原因 1、由于之前我已经安装了插件ConvertToUTF8&#xff0c;排除文本编码错误问题。 2、相同的代码在插件sublimerepl搭建的…

第三届北京国际水利科技博览会将于25年3月在国家会议中心召开

由中国农业节水和农村供水技术协会、北京水利学会、振威国际会展集团等单位联合主办的第三届北京国际水利科技博览会暨供水技术与设备展&#xff08;北京水利展&#xff09;将于2025年3月31日至4月2日在北京•国家会议中心举办&#xff01; 博览会以“新制造、新服务、新业态”…

RHCE DNS

DNS DNS1.1 DNS介绍1.2 安装bind&#xff0c;配置文件1.3 正向解析文件模板1.4 反向解析文件模板1.5 转发服务器实验1.6 解析web服务器实验1.7 区域传送克隆虚拟机 DNS 1.1 DNS介绍 DNS系统 域名系统&#xff08;DNS&#xff09;是一个分层的分布式数据库。它存储用于将Inter…

JSON交互处理

目录 一、什么是JSON 二、JSON和JavaScript对象互转 ​三、Controller返回JSON数据 3.1 使用Jackson 编写Controller 1. 一个对象 2. 多个对象 3. 输出时间对象 4. 优化&#xff1a;抽取为工具类 一、什么是JSON Json是JavaScript对象的字符串表示法&#xff0c;它用…