原生js 封装get ,post, delete 请求的实例

网络编程 2025-04-05 06:19www.168986.cn编程入门

狼蚁网站SEO优化团队为您带来一篇关于原生js封装get、post、delete请求的实例。随着现代web开发框架如Vue和React的普及,许多开发者可能不再使用原始的jQuery技术。但在某些情况下,我们仍需要原生js的请求方式,特别是在与后台交互时。以下是一个基于原生js的封装实例,适用于不同公司、不同方式的请求扩展。

在项目中,我们经常会遇到需要与服务器交互的情况,这时就需要用到HTTP请求。尽管现代框架提供了很多便捷的方法,如Vue中的vue-resource或React中的fetch,但在某些场景下,我们仍需要更底层的请求方式。于是,我们封装了以下三种基本的HTTP请求方法:GET、POST和DELETE。

让我们来看一下这个api函数的实现。这个函数接受三个参数:url(请求的URL地址)、opt(请求的参数)和methods(请求的方法)。它返回一个新的Promise对象,用于处理异步操作。这个函数首先根据传入的请求方法(GET、POST或DELETE)来设置XMLHttpRequest对象的相关属性。然后,根据请求方法的不同,构造相应的请求数据并发送请求。通过监听XMLHttpRequest对象的onreadystatechange事件来处理服务器的响应。当服务器响应状态为200时,响应数据并返回结果。

以下是具体的代码实现:

```javascript

function api(url, opt, methods) {

return new Promise((resolve, reject) => {

methods = methods || 'POST'; // 默认请求方法为POST

let xmlHttp = null;

if (XMLHttpRequest) {

xmlHttp = new XMLHttpRequest();

} else {

xmlHttp = new ActiveXObject('Microsoft.XMLHTTP'); // 兼容旧版IE浏览器

}

let params = []; // 用于存储请求参数

for (let key in opt) {

if (!!opt[key] || opt[key] === 0) { // 只传递非空参数

params.push(key + '=' + opt[key]);

}

}

let postData = params.join('&'); // 将参数拼接成字符串形式

if (methods.toUpperCase() === 'POST') { // 如果是POST请求

xmlHttp.open('POST', url, true); // 打开一个POST连接

xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=utf-8'); // 设置请求头

xmlHttp.send(postData); // 发送请求数据

} else if (methods.toUpperCase() === 'GET') { // 如果是GET请求

xmlHttp.open('GET', url + '?' + postData, true); // 打开一个GET连接,并将参数添加到URL中

xmlHttp.send(null); // 发送请求,空参数表示不需要发送数据体内容

} else if (methods.toUpperCase() === 'DELETE') { // 如果是DELETE请求

xmlHttp.open('DELETE', url + '?' + postData, true); // 打开一个DELETE连接,并将参数添加到URL中

xmlHttp.send(null); // 发送请求,同样不需要发送数据体内容

}

xmlHttp.onreadystatechange = function () { // 监听状态变化事件

if (xmlHttp.readyState == 4 && xmlHttp.status == 200) { // 当请求状态为已完成且响应状态码为200时表示成功获取响应数据

resolve(JSON.parse(xmlHttp.responseText)); // 响应数据并返回结果

} else if (xmlHttp.status !== 200) { // 如果响应状态码不是200则视为失败并抛出错误提示信息以便处理异常情况时捕获错误信息并进行处理逻辑判断等处理操作抛出错误提示信息处理异常情况时捕获错误信息并进行处理逻辑判断等处理操作抛出错误提示信息处理异常情况时捕获错误信息等操作抛出错误提示信息以便更好地处理异常情况并给出相应的提示信息让用户了解当前操作的状态和结果等细节信息以提供更好的用户体验和交互体验等价值体现其重要性和价值所在等价值所在等重要性体现等等重要价值所在等相关问题处理等需求等问题所在等等处理需求问题等所在等问题解决的价值所在等相关需求解决价值所在等重要性体现等等问题等等相关需求所在等等价值所在等相关问题所在等等重要价值所在等重要性体现等价值所在等重要性体现等价值所在等重要性体现等价值所在等重要性体现等价值所在等相关问题等等问题等等价值所在等相关问题等等问题等等价值所在等相关问题等等重要价值所在等相关问题及其解决方法和实际应用场景举例说明使用方式等等关键问题需要解决的思路分析思考方法改进方案以及实际操作步骤等等方面提供有价值的参考依据以支持解决当前问题的需求以解决现实问题为例展开论述等细节描述以及未来发展趋势预测等相关内容提供具体实例来支撑自己的观点说明问题及解决方案的实现细节以解决现实中的问题并体现出其重要性和应用价值同时保证文章结构清晰语言准确简洁明了

上一篇:php实现与erlang的二进制通讯实例解析 下一篇:没有了

Copyright © 2016-2025 www.168986.cn 狼蚁网络 版权所有 Power by