fetch(url, { // 'GET', 'POST', 'PUT', 'DELETE'等 method: 'GET', })
关于 GET 参数
发送GET
请求时的query
参数不能放到对象中(如:{a:1, b:2}
) 必须在 url
字符串中:
const url = 'http://api.example.com/search?a=1&b=2'
可通过如下函数处理url
:
function makeURL(url, params = {}) { let _URL = new URL(url, window.location.origin); Object.keys(params).forEach(key => _URL.searchParams.append(key, params[key])); return _URL } const url = makeURL('http://api.example.com/search',{ a: 1, b: 2, })
然后发起请求:
fetch(url, { method: 'GET' })
关于 POST 请求体 body
如需通过POST
请求的发送json
,需要做字符串化处理:
fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/json', } body: JSON.stringify({a: 1, b: 2}) })
关于 cookies
Fetch 发送请求默认不携带 cookies
,如需携带,需要添加credentials: 'include'
参数:
fetch(url,{ method: 'GET', // 'POST'等 credentials: 'include', })
关于 Headers
定义headers
:
const headers = { "Content-Type": "application/x-www-form-urlencoded" "Authorization": "Token uynn887989afs989s8df9afa08&^&huh" }
或
const headers = new Headers({ "Content-Type": "application/x-www-form-urlencoded" "Authorization": "Token uynn887989afs989s8df9afa08&^&huh" })
发送请求:
fetch(url, { method: "POST", headers: headers, }
自定义的 headers
中的键会经过 Headers
对象包装,会自动转换为小写。
// Create a test Headers object var myHeaders = new Headers(); myHeaders.append('Content-Type', 'text/xml'); myHeaders.append('Vary', 'Accept-Language'); // Display the key/value pairs for (var [key,value] of myHeaders.entries()) { console.log(`${key}: ${value}`); }
输出为:
content-type: text/xml VM141:8 vary: Accept-Language
因此当我们发送 Authorization
令牌时,在服务端接收到的是 authorization
,如果仍用 Authorization
处理,将发生错误。
文件上传失败解决
删除你的自定义Content-Type
请求头设置