简单入门Fetch API

简介: 简单入门Fetch API

前言

Fetch API是使用 JavaScript请求资源的优秀工具。虽然我们开发时可能是经常使用axios,但是实际上Fetch API也能做很多一样的事。并且使用Fetch API不需要安装axios,所以我们做一些小案例,但是需要调接口的话,Fetch API便是很好的选择,不需要安装axios,也不需要像XMLHttpRequest 对象那样子需要较多步骤。

基本用法

接口有需要可以到最后自取(express接口)

分派请求

只需要使用fetch()方法即可,传参为获取资源的URL。该方法返回一个Promise对象。(和axios使用非常像)

const r = fetch('http://localhost:8088/getInfo')

console.log(r)

r.then(res => {
    console.log(res)
})

image-20220604132403546

读取响应

上面我们已经把响应结果打印出来了,但是并没有得到真正的响应体的数据。

这时候可以使用text()方法,这个方法会返回一个Promise对象,这个对象会resolve为读取资源的完整内容。

fetch('http://localhost:8088/getInfo?name=clz')
    .then(async (res) => {
        const data = await res.text()
        console.log(data)
        console.log(typeof data)
    })

image-20220611132502823

从结果来看,发现这时候得到的数据是string类型的,之后还需要通过JSON.parse()来操作。很显然不太好,这个时候只需要不是使用text()方法,而是使用json()方法即可。(使用方式和text()方法一样)

image-20220611132921936

请求失败

请求失败的时候还是会正常执行then方法里的处理函数。(这里的失败是指服务器返回了响应,但是不是成功的请求。)

fetch('http://localhost:8088/getBadRequest')
    .then(async (res) => {
        const data = await res.json()
        console.log(data)
    })

image-20220611141429705

如果服务器没有响应导致浏览器超时的话,这时候就不会再执行then()方法的处理函数,而是执行catch()方法的,因为这时候的Promise不再是resolved状态,而是rejected状态。(比如跨域时候)

后端接口注释掉app.use(cors()),不再处理跨域

fetch('http://localhost:8088/getBadRequest')
    .then(async (res) => {
        const data = await res.json()
        console.log(data)
    })
    .catch(reason => {
        console.log('catch()方法里的处理函数')
        console.log(reason)
    })

image-20220611142139336

POST方法

上面我们直接使用fetch()方法就是GET请求,那么假如我们想要使用POST方法来进行新增数据之类的操作呢?

fetch方法的第二个参数就是自定义选项,通过自定义选项就能实现GET请求之外的请求。比如使用POST方法的时候,自定义选项就需要method来确定请求方法,以及body来确定请求体的数据。

const data = {
    name: 'clz',
    age: 21
}

fetch('http://localhost:8088/postInfo', {
    method: 'POST',
    body: JSON.stringify(data)
})
    .then(async (res) => {
        const data = await res.json()
        console.log(data)
    })

image-20220611151000558

结果发现:请求得到的响应的状态码是400,提示信息是需要姓名和年龄,但是我们明明已经把姓名和年龄传过去了。这种时候,有可能是后端处理的问题,也有可能是前端传出去的格式的问题(即请求头的Content-Type)

image-20220611151154399

果不其然,我们传的数据是json形式的,但是Content-Type却不是json,所以我们的自定义选项还需要添加一个headers选项来设置选项的请求头。

const data = {
    name: 'clz',
    age: 21
}

const headers = new Headers({
    'Content-Type': 'application/json; charset=utf-8'
})

fetch('http://localhost:8088/postInfo', {
    method: 'POST',
    body: JSON.stringify(data),
    headers
})
    .then(async (res) => {
        const data = await res.json()
        console.log(data)
    })

image-20220611151402801

express接口

const express = require('express')
const cors = require('cors')

const app = express()

// 解决跨域
app.use(cors())

// 解析请求体的中间件(json格式)
app.use(express.json())

// GET请求
app.get('/getInfo', (req, res) => {

  res.json({
    code: 200,
    data: {
      name: '赤蓝紫',
      age: 21
    },
    msg: '获取信息成功',
  })
})

// 响应状态码为400
app.get('/getBadRequest', (req, res) => {
  res.status(400).json({
    code: 400,
    msg: 'Bad Request',
  })
})

// POST请求
app.post('/postInfo', (req, res) => {
  if (req.body.name === undefined || req.body.age === undefined) {
    res.status(400).json({
      code: 400,
      msg: '必须要有姓名、年龄'
    })
  } else {
    res.json({
      code: 200,
      data: req.body
    })
  }

})

const port = 8088
app.listen(port, () => {
  console.log(`http://localhost:${port}`)
})
目录
相关文章
|
4月前
|
JSON 安全 API
电商API入门问答:开发者必知的10个基础问题
本文详解电商API的10个基础知识,涵盖定义、用途、认证、安全等内容,帮助开发者快速入门并提升开发效率。
132 0
|
1月前
|
Cloud Native 算法 API
Python API接口实战指南:从入门到精通
🌟蒋星熠Jaxonic,技术宇宙的星际旅人。深耕API开发,以Python为舟,探索RESTful、GraphQL等接口奥秘。擅长requests、aiohttp实战,专注性能优化与架构设计,用代码连接万物,谱写极客诗篇。
Python API接口实战指南:从入门到精通
|
4月前
|
缓存 监控 安全
电商API集成入门:从零开始搭建高效接口
在数字化电商时代,API集成成为企业提升效率、实现系统互联的关键。本文从零开始,逐步讲解如何搭建高效、可靠的电商API接口,适合初学者学习。内容涵盖API基础、认证安全、请求处理、性能优化等核心步骤,并提供Python代码示例与数学公式辅助理解。通过实践,读者可掌握构建优质电商API的技巧,提升用户体验与系统性能。
213 0
|
7月前
|
JSON 算法 API
一文掌握 1688 商品详情 API 接口:从入门到实战
1688是国内领先的综合电商批发平台,提供海量商品资源。其商品详情API助力开发者与企业获取商品的详细信息(如属性、价格、库存等),广泛应用于电商数据分析、比价系统及采购场景。API支持GET/POST请求,需传入通用参数(app_key、timestamp等)与业务参数(如product_id)。返回JSON格式数据,包含商品标题、价格、图片链接等详情,提升业务效率与决策精准度。
|
7月前
|
搜索推荐 API 开发者
京东商品列表 API 接口全解析:从入门到精通
京东商品列表API是京东开放平台为开发者提供的核心数据接口,支持批量获取商品基础信息、价格、库存状态等多维度数据。它具备数据丰富性、灵活筛选与分页查询、稳定高效等特点,可满足市场分析、选品优化、比价工具及推荐系统开发等需求,为电商业务创新提供坚实支撑。通过标准化通道,助力第三方高效、合法地利用京东海量商品数据。
|
6月前
|
JSON API 开发工具
电商API接口入门指南
本文介绍了API的基础知识及其在电商领域的实际应用。首先,阐释了API的概念、运作机制及参数与返回值的作用,帮助读者理解如何通过API实现软件间的交互。接着,以获取电商商品列表为例,详细讲解了从选择平台、引入SDK到编写代码调用API的全流程。示例代码采用Python语言,利用requests库发送请求并解析JSON数据,为开发者提供了清晰的实践指导。
|
4月前
|
存储 安全 API
亚马逊SP-API入门:海外电商接口调用与国内平台的差异化
亚马逊 SP-API 与国内电商 API 在技术架构、安全机制及开发流程上差异显著。本文对比京东、淘宝等平台,分析接口设计、地域适配、权限管理等核心差异,并结合实战经验提供开发建议,助力开发者高效接入 SP-API,实现全球电商业务拓展。
|
6月前
|
数据挖掘 API 开发者
京东商品详情 API 接口全攻略:从入门到精通
京东商品详情API接口是京东开放平台为开发者提供的服务,用于获取商品详细信息。通过调用接口,开发者可获得商品属性、价格、库存、促销信息等数据,适用于电商应用、价格比较工具及数据分析平台等场景。支持GET/POST请求方式,参数包括API版本、密钥等。示例代码展示了如何使用Python的requests库调用该接口,并获取JSON格式的返回数据,包含商品基本信息、价格、库存和用户评价等内容。
279 16
|
12月前
|
JSON 前端开发 JavaScript
Proxy + Fetch 实现类似于 axios 的基础 API
本项目通过 Proxy 和 Fetch 技术实现了一个类似 axios 的基础 API,支持请求拦截、响应处理等功能,简化了前端网络请求的开发流程,提升了代码的可维护性和扩展性。
|
前端开发 API 开发者
Python Web开发者必看!AJAX、Fetch API实战技巧,让前后端交互如丝般顺滑!
在Web开发中,前后端的高效交互是提升用户体验的关键。本文通过一个基于Flask框架的博客系统实战案例,详细介绍了如何使用AJAX和Fetch API实现不刷新页面查看评论的功能。从后端路由设置到前端请求处理,全面展示了这两种技术的应用技巧,帮助Python Web开发者提升项目质量和开发效率。
264 1