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

下面是详细讲解“原生js 封装get ,post, delete 请求的实例”的完整攻略:

一、前置知识

在封装get, post, delete请求之前,我们需要对Http请求的基本知识有一定了解,比如HTTP请求方式、请求头、响应头、状态码等等。同时,我们也需要学习一些JavaScript中Promise对象的知识。

二、实现思路

通过封装get、post、delete三种常见的HTTP请求方式,以Promise的形式返回请求结果,实现异步回调。在实现时,我们可以使用XMLHttpRequest对象来发送HTTP请求,以及设置请求头等相关信息。

三、代码实现

1. 封装 Get 请求
function get(url) {
  // 返回一个Promise对象
  return new Promise((resolve, reject) => {
    const xhr = new XMLHttpRequest()
    xhr.open('GET', url, true)
    xhr.onreadystatechange = function() {
      if (xhr.readyState === 4) {
        if (xhr.status === 200) { // 成功返回响应
          resolve(JSON.parse(xhr.responseText))
        } else { // 请求失败
          reject(new Error(xhr.statusText))
        }
      }
    }
    xhr.onerror = function() {
      reject(new Error('XMLHttpRequest Error: ' + xhr.statusText))
    }
    xhr.send()
  })
}
2. 封装 POST 请求
function post(url, data) {
  return new Promise((resolve, reject) => {
    const xhr = new XMLHttpRequest()
    xhr.open('POST', url, true)
    xhr.setRequestHeader('Content-Type', 'application/json')
    xhr.onreadystatechange = function() {
      if (xhr.readyState === 4) {
        if (xhr.status === 200) {
          resolve(JSON.parse(xhr.responseText))
        } else {
          reject(new Error(xhr.statusText))
        }
      }
    }
    xhr.onerror = function() {
      reject(new Error('XMLHttpRequest Error: ' + xhr.statusText))
    }
    xhr.send(JSON.stringify(data))
  })
}
3. 封装 DELETE 请求
function deleteRequest(url) {
  return new Promise((resolve, reject) => {
    const xhr = new XMLHttpRequest()
    xhr.open('DELETE', url, true)
    xhr.onreadystatechange = function() {
      if (xhr.readyState === 4) {
        if (xhr.status === 200) {
          resolve(JSON.parse(xhr.responseText))
        } else {
          reject(new Error(xhr.statusText))
        }
      }
    }
    xhr.onerror = function() {
      reject(new Error('XMLHttpRequest Error: ' + xhr.statusText))
    }
    xhr.send()
  })
}

四、示例说明

下面是两个使用以上封装的示例:

1. GET 请求示例

比如我们需要获取一个名为"data.json"的本地json数据文件,我们可以使用下面的方式:

get('data.json').then(response => {
  console.log(response)
}).catch(error => {
  console.log(error)
})
2. POST 请求示例

我们可以使用下面的方式向服务器发送POST请求并传递相关数据:

const data = {
  username: 'test',
  password: '123456'
}
post('/api/login', data).then(response => {
  console.log(response)
}).catch(error => {
  console.log(error)
})

以上就是使用原生JavaScript封装get、post、delete请求的实现步骤和示例说明。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:原生js 封装get ,post, delete 请求的实例 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • JavaScript每天必学之数组和对象部分

    JavaScript每天必学之数组和对象部分 一、数组 数组是一种特殊的变量,它可以存储多个数据项,并且这些数据项可以是任意不同的数据类型。在 JavaScript 中,数组属于对象类型,但与其他对象不同的是,它可以通过索引来访问数组中的元素。 1.创建数组 JavaScript 中创建数组有两种方式,一种是使用数组字面量,另一种是通过 Array 构造函数…

    JavaScript 2023年5月27日
    00
  • java实现app签到功能

    实现App签到功能主要涉及到前端和后端两个方面的开发,其中前端主要负责 UI 设计和用户交互,后端主要负责数据存储和业务逻辑实现。 下面是一些具体的步骤和示例说明: 第一步:设计数据库表 在设计数据库表时,需要考虑到存储哪些数据以及如何进行查询。下面是一个简单的签到记录表: CREATE TABLE check_in_record ( id INT(11) …

    JavaScript 2023年5月28日
    00
  • js传参数受特殊字符影响错误的解决方法

    当使用JavaScript进行参数传递的时候,如果传递的参数中包含特殊字符,可能会出现错误。这种错误的解决方案可以通过对参数进行转义处理。 1. encodeURI() 和 decodeURI() 函数 使用encodeURI() 和 decodeURI() 函数可以对参数进行编码和解码。这两个函数都是全局对象的方法。 encodeURI()方法将一个字符串…

    JavaScript 2023年5月19日
    00
  • 如何利用JavaScript编写更好的条件语句详解

    当我们在编写JavaScript程序时,条件语句是非常常见的操作之一。在使用条件语句时,我们需要注意一些细节,如代码的可读性、运行效率、逻辑的正确性等方面。下面我将详细讲解如何利用JavaScript编写更好的条件语句。 使用清晰的变量名和注释 在编写条件语句时,我们应该使用清晰的变量名来描述条件,避免使用一些简短、难以理解的变量名。同时,在必要的时候使用注…

    JavaScript 2023年5月28日
    00
  • JavaScript 操作宏任务与微任务

    JavaScript 引擎在执行任务时,有两种类型的任务:宏任务(macro task)和微任务(micro task)。它们之间的差别在于执行顺序和触发方式,因此理解它们的区别很重要,也有助于我们编写更高效、优雅的代码。 什么是宏任务和微任务? 在 JavaScript 中,宏任务可以理解为当前执行栈中的任务,例如 script(整体代码)、setTime…

    JavaScript 2023年5月28日
    00
  • js实现0ms延时定时器的几种方式

    下面是详细的讲解“js实现0ms延时定时器的几种方式”的完整攻略。 什么是“0ms延时定时器” “0ms延时定时器”是指在JavaScript定时器中设置的延时时间为0ms,并且能够保证事件队列中下一个任务的执行完全在当前任务结束后立即执行。这种延时定时器对于实时性要求较高的操作非常有用,例如画布绘制、游戏开发等。 几种实现方式 以下是几种实现“0ms延时定…

    JavaScript 2023年6月11日
    00
  • Javascript Date setUTCMonth() 方法

    以下是关于JavaScript Date对象的setUTCMonth()方法的完整攻略,包括两个示例说明。 JavaScript Date对象的setUTCMonth()方法 JavaScript的setUTCMonth()方法设置对象UTC月份部分。方法接受一个整数,表示要设置的UTC月份如果该参数超出了JavaScript所能表示的范围,则自动调整为相应…

    JavaScript 2023年5月11日
    00
  • 用js提交表单解决一个页面有多个提交按钮的问题

    下面是使用 JS 提交表单解决一个页面多个提交按钮问题的攻略: 1. HTML 页面结构 首先,准备页面 HTML 结构。在表单中需要添加多个提交按钮时,我们可以使用一个 hidden 类型的 input 元素来保存当前提交按钮的值,然后为每个按钮添加相同的 name 属性,不同的 value 属性: <form id="myform&quo…

    JavaScript 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部