需求分析
还记得我们上节课遗留了一个问题,再来看这个例子:
axios({
method: 'get',
url: '/base/get',
params: {
a: 1,
b: 2
}
})
2020/1/5大约 4 分钟
还记得我们上节课遗留了一个问题,再来看这个例子:
axios({
method: 'get',
url: '/base/get',
params: {
a: 1,
b: 2
}
})
我们通过执行 XMLHttpRequest
对象实例的 send
方法来发送请求,并通过该方法的参数设置请求 body
数据,我们可以去 mdn 查阅该方法支持的参数类型。
我们发现 send
方法的参数支持 Document
和 BodyInit
类型,BodyInit
包括了 Blob
, BufferSource
, FormData
, URLSearchParams
, ReadableStream
、USVString
,当没有数据的时候,我们还可以传入 null
。
我们上节课遗留了一个问题:
axios({
method: 'post',
url: '/base/post',
data: {
a: 1,
b: 2
}
})
在前面的章节中,我们发送的请求都可以从网络层面接收到服务端返回的数据,但是代码层面并没有做任何关于返回数据的处理。我们希望能处理服务端响应的数据,并支持 Promise 链式调用的方式,如下:
axios({
method: 'post',
url: '/base/post',
data: {
a: 1,
b: 2
}
}).then((res) => {
console.log(res)
})
我们通过 XMLHttpRequest
对象的 getAllResponseHeaders
方法获取到的值是如下一段字符串:
date: Fri, 05 Apr 2019 12:40:49 GMT
etags: W/"d-Ssxx4FRxEutDLwo2+xkkxKc4y0k"
connection: keep-alive
x-powered-by: Express
content-length: 13
content-type: application/json; charset=utf-8
在我们不去设置 responseType
的情况下,当服务端返回给我们的数据是字符串类型,我们可以尝试去把它转换成一个 JSON 对象。例如:
data: "{"a":1,"b":2}"