将 curl GET 转换为 javascript 获取
Posted
技术标签:
【中文标题】将 curl GET 转换为 javascript 获取【英文标题】:Convert curl GET to javascript fetch 【发布时间】:2015-09-11 10:15:16 【问题描述】:我能够使用以下命令从解析中成功检索对象:
curl -X GET \
-H "X-Parse-Application-Id:1231231231" \
-H "X-Parse-REST-API-Key: 131231231" \
-G \
--data-urlencode 'where="uid":"12312312"' \
https://api.parse.com/1/classes/birthday`
但我正在努力将其转换为 javascript,使用下面的代码,我将得到一个 status 为200
的响应。我认为错误是将 data-urlencode 转换为 data:
var getObject = function
var url = "https://api.parse.com";
url += '/1/classes/birthday';
fetch(url,
method: 'GET',
headers:
'Accept': 'application/json',
'X-Parse-Application-Id': '12122',
'X-Parse-REST-API-Key': '12121',
'Content-Type': 'application/json',
,
data: '"where":"uid":"12312312"'
)
.then(function(request, results)
console.log(request)
console.log(results)
)
谢谢!
【问题讨论】:
我不熟悉fetch
,但看起来data
周围不应该有单引号,例如data:"where":"uid":"12312312"
@chiliNUT 刚试过,同样的反应,谢谢:body: (... ), bodyUsed: false, headers: Headers, ok: true, status: 200, statusText: "OK", type: "cors", url: "https://api.parse.com/1/classes/birthday"
你解决了吗?我正在尝试类似的东西,但无论我输入什么数据,甚至是格式错误的 json,我都会从类/运行中获取所有项目。它没有过滤任何东西,或者给我错误。当我对 curl 做同样的事情时,我得到“json error”,这是正确的得到
为什么不直接使用wireshark.org (Wireshark) 并亲自查看发送的内容,然后再尝试生成相同的输出?
【参考方案1】:
因为我经常想这样做,所以我做了https://kigiri.github.io/fetch/,你可以复制/粘贴一个 curl 命令,它会给你获取代码。
如果您想以不同的方式使用它,您可以查看源代码。
编辑:该功能已添加到 chrome devtools ?? 感谢 chrome 开发团队?
【讨论】:
@user3696212 我添加了对-F的支持,试试看有什么问题告诉我。 祝福你做到了! 哇,这太棒了!谢谢你的朋友:)【参考方案2】:好的,那么基本上你需要另一个。所以它与承诺有关。看了这篇很棒的文章http://blog.gospodarets.com/fetch_in_action/
你需要做的是这个
var getObject = function
var url = "https://api.parse.com";
url += '/1/classes/birthday';
return fetch(url,
method: 'GET',
headers:
'Accept': 'application/json',
'X-Parse-Application-Id': '12122',
'X-Parse-REST-API-Key': '12121',
'Content-Type': 'application/json',
,
data: '"where":"uid":"12312312"'
)
.then(function(response)
return response.text();
)
.then(function(data)
console.log(data); //this will just be text
var data_obj = JSON.parse(data);
return data_obj
)
我真的不明白为什么你必须返回 response.text()。再次,它与承诺有关
https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise
因为当我从第一个访问 response.text() 时。它返回一个承诺。
希望其他善良的绅士可以评论并解释为什么返回 response.text() 会将承诺变成您需要的数据。
--编辑--
我添加了一些返回来展示如何让 getObject 将响应数据作为对象返回。所以
var d = getObject();
现在将响应作为 js 对象返回。
【讨论】:
是的,查尔斯!我爱你:D以上是关于将 curl GET 转换为 javascript 获取的主要内容,如果未能解决你的问题,请参考以下文章
如何将 curl GET 请求转换为 Zapier Webhook 请求?
如何将 instagram curl 发布请求转换为 javascript 请求?
将 php 转换为 c#,将 curl 转换为 .net [关闭]