博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
每日 30 秒 ⏱ 一个简单的 HTTP 请求客户端
阅读量:7167 次
发布时间:2019-06-29

本文共 1757 字,大约阅读时间需要 5 分钟。

简介

XMLHttpRequest、HTTP 工具原理、XHR

jQuery.ajax、axios和 新的 Web APIfetch在浏览器不支持的兼容代码都是利用XMLHttpRequest来完成网络请求,今天一起来实现一个简单的HTTP 请求客户端顺便学习XMLHttpRequest` 中较为常用的函数方法:

const http = ({  url,  callback,  data=null,  method='GET',  err = console.error,}) => {    const request = new XMLHttpRequest();    request.open(method, url, true);    request.setRequestHeader('Content-type', 'application/json; charset=utf-8');    request.onerror = () => err(request);    request.onload = () => callback(request.responseText);    request.send(data ? JSON.stringify(data) : null);};复制代码

代码分析

函数为接受一个对象参数,而不是像 (url, callback) 这样的参数列表?因为使用对象相对参数列表来说不用刻意的去记参数的顺序只需要记住所需数据:

小技巧:根据情况利用对象参数来代替参数列表。

const http = ({  url,  callback,  data=null,  method='GET',  err = console.error,}) => {    // ...};复制代码

创建 XMLHttpRequest 对象并使用 XMLHttpRequest.open() 方法初始化一个请求(这里的 method 可以是 GET、POST、PUT、DELETE):

const request = new XMLHttpRequest();request.open(method, url, true);复制代码

设置 Request Header 中的内容类型:

request.setRequestHeader('Content-type', 'application/json; charset=utf-8');复制代码

当请求完成时利用 回调函数 来执行外部传入的代码:

小技巧:善用用回调函数。

request.onerror = () => err(request);request.onload = () => callback(request.responseText);复制代码

发送需要带上的数据:

request.send(data ? JSON.stringify(data) : null);复制代码

使用场景

手痒的同学可以开始动手加上 Promise 或者按照 axios API 实现一个自己的 HTTP Client,好奇宝宝可以试试阅读相关 axiosfetch 源码。下面给出几个使用例子:

http({    method: 'POST',    url: 'http://pushme.top/api/v1/posts',    callback: console.log,     data: { title: 'hello', content: 'hello world'}})http({    method: 'GET',    url: 'http://pushme.top/api/v1/posts',    callback: console.log, })复制代码

一起成长

在困惑的城市里总少不了并肩同行的 伙伴 让我们一起成长。

  • 如果您想让更多人看到文章可以点个 点赞
  • 如果您想激励小二可以到 给个 小星星
  • 如果您想与小二更多交流添加微信 m353839115

本文原稿来自

转载于:https://juejin.im/post/5c8e9e6951882545a76388fc

你可能感兴趣的文章
iOS之 opencv3.0.framework
查看>>
css 兼容ie8 rgba()用法
查看>>
[转载]如何从 Windows Phone 的罗盘传感器获取数据
查看>>
ASP.NET MVC5 入门
查看>>
动态规划
查看>>
Java enum枚举的使用方法
查看>>
主账号删除后,查询应用时,无法翻页
查看>>
Android 4.4.4: java.lang.SecurityException: Package com.android.settings does not belong to 1001
查看>>
java中生成验证码,以及验证码的使用
查看>>
C#二维码
查看>>
创建包
查看>>
数据查询
查看>>
织梦list文章列表按权重排序
查看>>
DNS Prefetching
查看>>
hive基本操作与应用
查看>>
jquery : 代码中实现单击按钮的效果
查看>>
Beginning Windows Azure Development Guide
查看>>
【HDOJ】3068 最长回文
查看>>
Spring AOP中pointcut expression表达式解析 及匹配多个条件
查看>>
iOS 页面间传值 之 属性传值,代理传值
查看>>