我正在尝试在 dart 中执行以下 curl,但我找不到实现该目标的方法:
curl --location --request GET 'https://someurl.com/query' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer xxxx' \
--data-raw '{
"query":"test_value",
"size":10
}'
我发现实现这一点的唯一方法是使用 POST 并将原始数据放入正文中,但我想知道是否有真正的方法来实现这一点,因为带有正文的 POST 请求似乎大约为 220 毫秒比 GET 慢(我知道它们应该几乎相等,它可能是服务器在接收请求时的某些东西)。
答案 0 :(得分:1)
get()
包的默认 http
方法不允许您添加数据,因为这不是一件常见的事情。您可以通过直接使用 Request
对象进行更细粒度的控制来解决此问题,as stated in the docs:
Request req = Request('GET', Uri.parse('https://someurl.com/query'))
..body = json.encode(data)
..headers.addAll({
"Content-type": "application/json",
"Authorization": "Bearer xxxx"
});
var response await req.send();
if (response.statusCode == 200) {
// do something with valid response
}
我会考虑让 POST 变体正常工作,因为 GET 方法在语义上不应该对提供的主体做任何事情。但这当然是另一回事了。