Fetct
fetch:系统基于promise 封装的ajax方法 fatch().then().then()
缺点:1、不能提供上传进度;2.兼容性问题
基本用法
get方法 post方法fetch("/test").then(res=>{
return res.json();
}).then(res=>{
console.log(res);
}).catch(err=>{
console.log(err);
})
参数
- 第一个参数是请求的url
- 第二个参数 options对象 常用配置
- `method`: 请求使用的方法,如 `GET、``POST。`
- `headers`: 请求的头信息,形式为 [`Headers`](https://developer.mozilla.org/zh-CN/docs/Web/API/Headers) 的对象或包含 [`ByteString`](https://developer.mozilla.org/zh-CN/docs/Web/API/ByteString) 值的对象字面量。
- `body`: 请求的 body 信息:可能是一个 [`Blob`](https://developer.mozilla.org/zh-CN/docs/Web/API/Blob)、[`BufferSource`](https://developer.mozilla.org/zh-CN/docs/Web/API/BufferSource)、[`FormData`](https://developer.mozilla.org/zh-CN/docs/Web/API/FormData)、[`URLSearchParams`](https://developer.mozilla.org/zh-CN/docs/Web/API/URLSearchParams) 或者 [`USVString`](https://developer.mozilla.org/zh-CN/docs/Web/API/USVString) 对象。注意 GET 或 HEAD 方法的请求不能包含 body 信息。
- `mode`: 请求的模式,如 `cors、` `no-cors` 或者 `same-origin。`
- `same-origin`表示必须同源,绝对禁止跨域,这个是老版本浏览器默认的安全策略。
- `no-cors`这个就很特殊了,字面意思是禁止以CORS的形式跨域,其实它的效果是,对外域的请求可以发送,外域服务器无论设不设`Access-Control-Allow-Origin: *`都会接收请求并处理请求,但是浏览器不接收响应,即使外域返回了内容,浏览器也当做没接到
Headers对象
你可以通过 [`Headers()`](https://developer.mozilla.org/zh-CN/docs/Web/API/Headers/Headers) 构造函数来创建一个你自己的 headers 对象
var myHeaders = new Headers();
myHeaders.append("Content-Type", "text/plain");
myHeaders.append("Content-Length", content.length.toString());
myHeaders.append("X-Custom-Header", "ProcessThisImmediately")
或者
myHeaders = new Headers({
"Content-Type": "text/plain",
"Content-Length": content.length.toString(),
"X-Custom-Header": "ProcessThisImmediately",
Response对象
Response.clone()
创建一个Response对象的克隆
Response.json()
读取 Response对象并且将它设置为已读(因为Responses对象被设置为了 stream 的方式,所以它们只能被读取一次) ,
并返回一个被解析为JSON格式的promise对象
Response.text()
读取 Response对象并且将它设置为已读(因为Responses对象被设置为了 stream 的方式,所以它们只能被读取一次) ,
并返回一个被解析为USVString格式的promise对象
网友评论