赞
踩
XMLHttpRequest的问题
Fetch Api 的特点
fetch()
基本使用参数:
1、资源的路径,必填项
2、请求头的配置对象,可以选填。
返回值:
无论请求成功与否,它都返回一个 Promise
对象
Promise
进入resolved
状态,状态数据为 Response
对象Promise
进入 rejected
状态,状态数据为错误信息function getDatas(){
const url = "..."
const pro = fetch(url)
pro.then(resp=>{
//只要没报错 ,状态是200还是404都是进入resolve钻沟通
console.log(resp)
}).catch(error=>{
console.log(error)
})
}
function getDatas(){
const url = "..."
pro = fetch(url)then(resp=>{
//只要没报错 ,状态是200还是404都是进入resolve钻沟通
console.log(resp)
}).catch(error=>{
console.log(error)
})
}
async
和await
的fetch
async function getDatas(){
const url = "..."
const config = {}
try {
const resp = await fetch(url,config)
const result = await resp.json()
console.log(result)
} catch (error) {
console.log(error)
}
}
除了使用基本的fetch方法,还可以通过创建一个Request对象来完成请求(实际上,fetch的内部会帮你创建一个Request对象。
new Request(url地址, 配置)
Request对象属性(只读):
Request对象方法:
简单举例:
const req = new Request('http://localhost/a');
const url = req.url; // http://localhost/a
const method = req.method; // GET
const cred = req.credentials; // omit
注意点:尽量保证每次请求都是一个新的Request对象
function getRequestInfo(){ const url = "..." const config = { method:"get", headers:{ "Content-Type":"application.json" } } return new Request(url,config) } async function getDatas(){ try { const req = getRequestInfo() const resp = await fetch(req) const result = await resp.json() console.log(result) } catch (error) { console.log(error) } } getProvince()
Response对象属性:
Response对象方法:
const respone = new Response(
`{"id":1,"name":"北京"},{"id":2,"name":"山东"}`,
{
ok:true,
status:200
})
Headers 接口允许您对HTTP请求和响应头执行各种操作。在Request和Response对象内部,会将传递的请求头对象,转换为Headers
const headers = new Headers({})
Headers对象方法:
console.log(req.headers.has("Content-Type"))
console.log(req.headers.get("Content-Type"))
console.log(req.headers.set("Content-Type","application/json"))
请求方法:POST
请求的表单格式:multipart/form-data
请求体:必须包含一个键值对,键的名称是服务器要求的名称,值是文件数据
HTML5中,JS仍然无法随意的获取文件数据,但是可以获取到input元素中,被用户选中的文件数据
可以利用HTML5提供的FormData构造函数来创建请求体
async function upload(files = []){ //files [{key:key,value:value}] if(files.length===0) return const url = "..." const formData = new FormData();//构建请求题 for (const item of files) { formData.append(item.key,item.value) } const resp = await fetch(url,{ method:"post", headers:{ "Content-Type":"multipart/form-data" }, body:formData//可以省略请求头,会自动修改为multipart/form-data }) const result = await resp.json() }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。