ctrlcv-dev.comgithub

JS fetch()cheatsheet

贡献者:BAI

Fetch

THEN(RESPONSE
fetch('/data.json')
.then(response => response.json())
.then(data => {
console.log(data)
})
.catch(err => ...)

Response

JS
fetch("/data.json").then((res) => {
res.text(); // response body (=> Promise)
res.json(); // JSON 格式 (=> Promise)
res.status; //=> 200
res.statusText; //=> 'OK'
res.redirected; //=> false
res.ok; //=> true
res.url; //=> 'http://site.com/data.json'
res.type; //=> 'basic'
// ('cors' 'default' 'error'
// 'opaque' 'opaqueredirect')
res.headers.get("Content-Type");
});

Request 选项

JS
fetch('/data.json', {
method: 'post',
body: new FormData(form),
body: JSON.stringify(...),
headers: {
'Accept': 'application/json'
},
credentials: 'same-origin',
credentials: 'include',
})

错误捕捉

JS
fetch("/data.json").then(checkStatus);
JS
function checkStatus(res) {
if (res.status >= 200 && res.status < 300) {
return res;
} else {
let err = new Error(res.statusText);
err.response = res;
throw err;
}
}

不是 2xx 的响应依旧是成功的请求,需要用另一个函数去做错误处理

在 Node.js 中使用

JS
const fetch = require("isomorphic-fetch");

详见: isomorphic-fetch (npmjs.com)

参考资料