← 返回首页
Javascript基础教程(五十四)
发表时间:2022-12-11 18:08:33
fetch发送ajax请求

fetch() 方法是一个window的全局方法,用于发起获取资源的请求。它返回一个promise,这个 promise 会在请求响应后被 resolve,并传回 Response 对象。

1.fetch发送Get请求

Fetch是一种现代的数据网络请求 API,它旨在解决 XHR 的一些问题,提供了更强大、更灵活的方式来处理 HTTP 请求。可以理解为XMLHttpRequest的升级版。

fetch有以下特征:

fetch方法的then会接收一个Response实例,值得注意的是fetch方法的第二个then接收的才是后台传过来的真正的数据,一般第一个then对数据进行处理等。

fetch('url',{
     //请求方法
     method:'GET',
     //请求头
     headers:{},
}).then().then()

GET请求可以简写如下:

fetch('url').then().then()

实例:

function sendGetRequest() {
        /*
        fetch('https://www.simoniu.com/commons/items/130', {
            //请求方法
            method: 'GET',
            //请求头
            headers: {},
        }).then(resp => {
                console.log(resp)
                return resp.json();
            }
        ).then(result => {
            console.log(result);
        }).catch(err => {
            console.log(err)
        })*/

        fetch('https://www.simoniu.com/commons/items/130').then(resp => {
                console.log(resp)
                return resp.json();
            }
        ).then(result => {
            console.log(result);
        }).catch(err => {
            console.log(err)
        })
    }

2.fetch发送Post请求

fetch请求post格式:

fetch('url',{
     //请求方法
     method:'POST',
     //请求头
     headers:{},
     //请求体
     body:{}
}).then().then()

实例:

 function sendPostRequest() {
        fetch('https://www.simoniu.com/commons/address/', {
            method: 'post',
            headers: {
                'Content-Type': 'application/json'
            },
            body: JSON.stringify({
                "uid": 22,
                "realname": "tester",
                "mobile": "137726577889",
                "province": "河南省",
                "city": "郑州市",
                "zone": "金水区",
                "street": "金水大道33号"
            })
        }).then((response) => response.json())
            .then((response) => {
                console.log(response)
            }).catch(err => {
            console.log(err)
        })
 }

3.XHR和fetch对比

fetch和XHR都是前端获取远端数据的方式。它们之间有什么区别吗?

其元素能力的对比如下图所示:

常用库和插件

基于XHR封装的库 - jquery:一个 JavaScript 库,提供了用于处理 DOM 操作、事件处理和 XHR 请求的便捷方法。 - axios:一个流行的 HTTP 请求库,基于 XHR 开发,支持浏览器和 Node.js。

基于 fetch 封装的库 - redaxios:它具有与 axios 类似的 API,但更轻量级且适用于现代 Web 开发。 - umi-request:由 Umi 框架维护的网络请求库,提供了强大的拦截器、中间件和数据转换功能。

小结:

XMLHttpRequest (XHR) 和 Fetch API 都是前端开发中用于进行数据请求的有力工具。XHR 在传统项目中仍然有用,而 Fetch API 则在现代 Web 开发中越来越流行。具体选择哪个工具取决于项目的需求和开发团队的偏好。