将 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,使用下面的代码,我将得到一个 status200 的响应。我认为错误是将 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 转换为 javascript

如何将 curl GET 请求转换为 Zapier Webhook 请求?

如何将 instagram curl 发布请求转换为 javascript 请求?

将 php 转换为 c#,将 curl 转换为 .net [关闭]

将 Postman“获取新的授权令牌”转换为 curl 命令

如何将 cURL 转换为邮递员?