惠州如何运营好小程序_JavaScript fetch接口案例解析

2021-01-11 10:21 admin
JavaScript fetch接口案例解析       本文通过案例给大家介绍了JavaScript fetch接口,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

在 AJAX 时代,进行 API 等网络请求都是通过 XMLHttpRequest 或者封装后的框架进行网络请求。

现在产生的 fetch 框架简直就是为了提供更加强大、高效的网络请求而生,虽然在目前会有一点浏览器兼容的问题,但是当我们进行 Hybrid App 开发的时候,如我之前介绍的 Ionic 和 React Native,都可以使用 fetch 进行完美的网络请求。

如果看网上的fetch教程,会首先对比XMLHttpRequest和fetch的优劣,然后引出一堆看了很快会忘记的内容(本人记性不好)。因此,我写一篇关于fetch的文章,为了自己看着方便,毕竟工作中用到的也就是一些很基础的点而已。

fetch,说白了,就是XMLHttpRequest的一种替代方案。如果有人问你,除了Ajax获取后台数据之外,还有没有其他的替代方案?

这是你就可以回答,除了XMLHttpRequest对象来获取后台的数据之外,还可以使用一种更优的解决方案fetch。

fetch的案例

下面我们来写第一个fetch获取后端数据的例子:

// 通过fetch获取百度的错误提示页面
fetch('') // 返回一个Promise对象
 .then((res)= {
 return res.text() // res.text()是一个Promise对象
 .then((res)= {
 console.log(res) // res是最终的结果
 })

GET请求

GET请求初步

完成了helloworld,这个时候就要来认识一下GET请求如何处理了。

上面的helloworld中这是使用了第一个参数,其实fetch还可以提供第二个参数,就是用来传递一些初始化的信息。

这里如果要特别指明是GET请求,就要写成下面的形式:

// 通过fetch获取百度的错误提示页面
fetch('', {
 method: 'GET'
 .then((res)= {
 return res.text()
 .then((res)= {
 console.log(res)
 })

GET请求的参数传递

GET请求中如果需要传递参数怎么办?这个时候,只能把参数写在URL上来进行传递了。

// 通过fetch获取百度的错误提示页面
fetch(' a=1 b=2', { // 在URL中写上传递的参数
 method: 'GET'
 .then((res)= {
 return res.text()
 .then((res)= {
 console.log(res)
 })

POST请求

与GET请求类似,POST请求的指定也是在fetch的第二个参数中:

// 通过fetch获取百度的错误提示页面
fetch('', {
 method: 'POST' // 指定是POST请求
 .then((res)= {
 return res.text()
 .then((res)= {
 console.log(res)
 })

POST请求参数的传递

众所周知,POST请求的参数,一定不能放在URL中,这样做的目的是防止信息泄露。

// 通过fetch获取百度的错误提示页面
fetch('', {
 method: 'POST',
 body: new URLSearchParams([["foo", 1],["bar", 2]]).toString() // 这里是请求对象
 .then((res)= {
 return res.text()
 .then((res)= {
 console.log(res)
 })

设置请求的头信息

在POST提交的过程中,一般是表单提交,可是,经过查询,发现默认的提交方式是:Content-Type:text/plain;charset=UTF-8,这个显然是不合理的。下面咱们学习一下,指定头信息:

// 通过fetch获取百度的错误提示页面
fetch('', {
 method: 'POST',
 headers: new Headers({
 'Content-Type': 'application/x-www-form-urlencoded' // 指定提交方式为表单提交
 body: new URLSearchParams([["foo", 1],["bar", 2]]).toString()
 .then((res)= {
 return res.text()
 .then((res)= {
 console.log(res)
 })

这个时候,在谷歌浏览器的Network中查询,会发现,请求方式已经变成了content-type:application/x-www-form-urlencoded。

通过接口得到JSON数据

由于最常用的是JSON数据,那么下面就简单演示一下获取JSON数据的方式:

fetch('rec platform=wise ms=1 rset=rcmd word=123 qid= rq=123 from=844b baiduid=A1D0B88941B30028C375C79CE5AC2E5E%3AFG%3D1 tn= clientWidth=375 t=69 r=8255', { // 在URL中写上传递的参数
 method: 'GET',
 headers: new Headers({
 'Accept': 'application/json' // 通过头指定,获取的数据类型是JSON
 .then((res)= {
 return res.json() // 返回一个Promise,可以解析成JSON
 .then((res)= {
 console.log(res) // 获取JSON数据
 })

强制带Cookie

默认情况下, fetch 不会从服务端发送或接收任何 cookies, 如果站点依赖于维护一个用户会话,则导致未经认证的请求(要发送 cookies,必须发送凭据头).

// 通过fetch获取百度的错误提示页面
fetch('', {
 method: 'GET',
 credentials: 'include' // 强制加入凭据头
 .then((res)= {
 return res.text()
 .then((res)= {
 console.log(res)
 })

总结

以上所述是小编给大家介绍的JavaScript fetch接口案例解析,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对凡科网站的支持!