Fetch - HTTP GET 请求示例

下面是一组快速示例,展示了如何使用fetch()与所有现代浏览器捆绑在一起的 API 发送 HTTP GET 请求。
使用 fetch 的简单 GET 请求

这会向Reqres api 发送一个 HTTP GET 请求,这是一个用于测试的假在线 REST api,它包括一个/api/users支持GET请求并返回用户数组和用户total数的路由。此示例将响应中的总数写入#get-request .total元素,以便显示在页面上。

// Simple GET request using fetch
const element = document.querySelector('#get-request .total');
fetch('https://reqres.in/api/users')
    .then(response => response.json())
    .then(data => element.innerHTML = data.total );

在https://stackblitz.com/edit/fetch-http-get-request-examples?file=get-request.js获取 GET 请求示例


使用 fetch 和 async/await 获取请求

这使用 fetch 发送相同的 GET 请求,但是这个版本使用一个async函数和awaitjavascript 表达式来等待 promise 返回(而不是使用then()上面的 promise 方法)。

(async () => {
    // GET request using fetch with async/await
    const element = document.querySelector('#get-request-async-await .total');
    const response = await fetch('https://reqres.in/api/users');
    const data = await response.json();
    element.innerHTML = data.total;
})();

在https://stackblitz.com/edit/fetch-http-get-request-examples?file=get-request-async-await.js获取 GET 请求示例


使用带有错误处理的 fetch 获取请求

这会向 API 上的无效 url 发送一个带有 fetch 的 GET 请求,然后将错误消息写入元素的父#get-request-error-handling .total元素并将错误记录到控制台。

fetch()函数将自动为网络错误抛出错误,但不会为 HTTP 错误(例如 4xx 或 5xx 响应)抛出错误。对于 HTTP 错误,我们可以检查response.ok属性以查看请求是否失败并通过调用自己拒绝承诺return Promise.reject(error);。这种方法意味着两种类型的失败请求 - 网络错误和 http 错误 - 都可以由单个catch()块处理。

// GET request using fetch with error handling
const element = document.querySelector('#get-request-error-handling .total');
fetch('https://reqres.in/invalid-url')
    .then(async response => {
        const isJson = response.headers.get('content-type')?.includes('application/json');
        const data = isJson && await response.json();

        // check for error response
        if (!response.ok) {
            // get error message from body or default to response status
            const error = (data && data.message) || response.status;
            return Promise.reject(error);
        }

        element.innerHTML = data.total;
    })
    .catch(error => {
        element.parentElement.innerHTML = `Error: ${error}`;
        console.error('There was an error!', error);
    });

在https://stackblitz.com/edit/fetch-http-get-request-examples?file=get-request-error-handling.js获取 GET 请求示例


使用带有设置 HTTP 标头的 fetch 获取请求

这将使用 fetch 再次发送相同的 GET 请求,并设置了几个标头,HTTPAuthorization标头和自定义标头My-Custom-Header

// GET request using fetch with set headers
const element = document.querySelector('#get-request-set-headers .total');
const headers = {
    'Authorization': 'Bearer my-token',
    'My-Custom-Header': 'foobar'
};
fetch('https://reqres.in/api/users', { headers })
    .then(response => response.json())
    .then(data => element.innerHTML = data.total);

在https://stackblitz.com/edit/fetch-http-get-request-examples?file=get-request-set-headers.js获取 GET 请求示例

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: fetch API 是 JavaScript 中的一个内置对象,用于向服务器发送请求并获取数据。get请求fetch API 支持的一种网络请求方法,用于获取服务器端的数据。get请求通常不传递任何数据到服务器端,而是从服务器端获取数据。 下面是一个 fetch API 发送 get 请求示例: ``` fetch('https://example.com/data') .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error)); ``` 在这个示例中,fetch API 向 https://example.com/data 发送一个 get 请求,并处理服务器返回的响应。如果响应是一个 JSON 数据,则通过 `response.json()` 方法解析数据,并通过 `console.log(data)` 将数据打印到控制台。如果请求发生错误,则通过 `console.error(error)` 将错误信息打印到控制台。 ### 回答2: fetch是一个现代的网络请求API,用于向服务器发送请求并获取响应。它支持get请求是其中一种方法。 在使用fetch发送get请求时,我们需要传递一个URL作为请求的目标。可以是一个相对的URL(例如/api/data)或一个完整的URL(例如https://example.com/api/data)。 发送get请求的语法如下: fetch(url, { method: 'GET', headers: { // 可选的请求头参数 }, // 可选的请求体参数 }) .then(function(response) { // 处理响应的代码 }) .catch(function(error) { // 处理错误的代码 }); 在发送get请求后,fetch会返回一个promise对象,该对象会在请求完成后进行解析。我们可以使用.then()来处理请求成功时的响应,使用.catch()来处理请求失败时的错误。 在处理响应时,我们可以通过response对象获取响应的状态码、头部信息和响应体。我们可以使用response.status来获取状态码,response.headers获取头部信息,以及通过response.json()或response.text()来获取响应体的内容。 使用fetch发送get请求具有以下优点: 1. 简单易用:语法简洁明了,只需传入URL和一些可选的参数即可发送请求。 2. 支持promise:可以使用.then()和.catch()来处理请求的异步操作。 3. 支持请求头和请求体:可以设置请求头参数来发送特定的请求,也可以发送一些请求体数据。 4. 跨域支持:可以发送跨域请求,并支持CORS(跨域资源共享)。 总之,fetchget请求是一种方便快捷的方式来向服务器发送请求,并获取响应的数据。它适用于各种网络请求场景。 ### 回答3: fetch是一种在JavaScript中用于发送网络请求的方法,其中最常见的是使用GET方法来获取服务器上的数据。在发送GET请求时,可以通过fetch方法传递参数和选项来定制请求。 首先,我们需要传递一个URL作为fetch方法的第一个参数,这是需要获取数据的服务器地址。例如:fetch('http://example.com/data')。 接下来,我们可以使用一些选项来配置请求,如headers、mode、credentials等。headers选项可以设置请求头,用于传递一些额外的信息,如token、用户认证信息等。mode选项用于设置跨域请求的模式,如设置为cors表示请求将跨域进行,no-cors表示是一个不跨域的请求。credentials选项用于设置是否携带认证信息,默认为omit不携带。 最后,我们需要使用.then方法来处理获取数据成功后的回调函数,并在回调函数中使用response对象处理获取到的数据。其中response对象中包含了很多有用的属性和方法,如status表示响应的状态码,可以根据状态码判断请求是否成功;json方法用于将响应的数据解析为JSON格式;text方法用于将响应的数据解析为文本格式,等等。 通过以上步骤,我们可以使用fetchGET请求获取服务器上的数据,然后根据需要进行处理和展示。值得注意的是,fetch返回一个Promise对象,可以通过链式调用.then和.catch来处理请求成功和失败的情况,从而实现更加灵活和强大的请求操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值