fetch 实现jsonp的办法以及fetch-jsonp的使用

时间:2023-07-13 13:25:57来源:互联网

下面小编就为大家分享一篇fetch 实现jsonp的办法以及fetch-jsonp的使用,具有很好的参考价值,希望对大家有所帮助。

一、什么是fetch

Fetch API提供了一个JavaScript接口 用于访问和操纵 HTTP 管道的一些具体部分 例如请求和响应它还提供了一个全局fetch()方法 该方法提供了一种简单 合理的方式来跨网络异步获取资源

因此 简单来说就是Ajax的替代品 也可以用于获取数据
Fetch API由于是基于Promise封装的 因此解决了Ajax的回调地狱问题 提高了代码的可读性和可维护性

需要注意的是:

fetch不接受跨域cookie 默认也不会发送cookie
且fetch默认不支持IE(但可使用其它插件使其支持)

 

二、fetch的使用

fetch的使用很简单 直接调用fetch()方法即可

需要注意的是:当使用fetch API获取数据的时候 第一个then是获取不到数据的
第一个then获取的是response对象 这只是一个Http响应 并不是真的JSON数据
可以调用response.json()得到一个新的promise 此时获取的才是数据

fetch('http://example.com/api/test').then(response  => {	return response.json();}).then(data => {	console.log(data);});

发送POST请求也很方便:
(有很多配置项可供配置)

 

fetch('http://example.com/api/test', {	body: JSON.stringify({name:"Mike"}), // JSON格式的请求数据	cache: 'no-cache', // default, no-cache, reload, force-cache, only-if-cached 缓存配置	credentials: 'same-origin', // include, same-origin, omit 请求凭据	headers: {'user-agent': 'Mozilla/4.0 Test','content-type': 'application/json'	},	method: 'POST', // GET, POST, PUT, DELETE之类的请求方式	mode: 'cors', // no-cors, cors, same-origin 跨域策略	redirect: 'follow', // manual, follow, error 重定向	referrer: 'no-referrer', // client, no-referrer 来源引用	})	.then(response  => response.json())	.then(data => {console.log(data);	});

三、fetch-jsonp的使用 / 解决跨域问题

默认的window.fetch会受到跨域限制 因此当fetch遇到跨域问题会比较麻烦
为此 有很多第三方的解决方案 fetch-jsonp就是其中之一
fetch-jsonp可以让fetch以JSONP的形式发送跨域请求
且使用方便 和浏览器内置的fetch完全兼容 使用方式和fetch基本别无二致

注:fetch-jsonp只支持GET请求

下载:

(若下载速度慢 也可使用cnpm)

npm install fetch-jsonp -S

导入:

import fetchJSONP from 'fetch-jsonp'

使用:

fetchJSONP("https://example.com/api/test").then(response => response.json()).then( data => {	console.log(data)})

本站部分内容转载自互联网,如果有网站内容侵犯了您的权益,可直接联系我们删除,感谢支持!