# egg的HTTP请求
# data: Object
需要发送的请求数据,根据 method 自动选择正确的数据处理方式。
GET,HEAD:通过 querystring.stringify(data)
处理后拼接到 url
的 query
参数上。
POST,PUT 和 DELETE
等:需要根据 contentType
做进一步判断处理。
contentType = json:通过 JSON.stringify(data)
处理,并设置为 body
发送。
其他:通过 querystring.stringify(data)
处理,并设置为 body
发送。
// GET + data
ctx.curl(url, {
data: { foo: 'bar' },
});
// POST + data
ctx.curl(url, {
method: 'POST',
data: { foo: 'bar' },
});
// POST + JSON + data
ctx.curl(url, {
method: 'POST',
contentType: 'json',
data: { foo: 'bar' },
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# dataAsQueryString: Boolean
如果设置了 dataAsQueryString=true,
那么即使在 POST 情况下, 也会强制将 options.data
以 querystring.stringify
处理之后拼接到 url 的 query
参数上。
可以很好地解决以 stream 发送数据,且额外的请求参数以 url query 形式传递的应用场景:
ctx.curl(url, {
method: 'POST',
dataAsQueryString: true,
data: {
// 一般来说都是 access token 之类的权限验证参数
accessToken: 'some access token value',
},
stream: myFileStream,
});
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9