web-dev-qa-db-ja.com

curl GETをjavascript fetchに変換する

以下のコマンドを使用して、解析からオブジェクトを正常に取得できます。

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-urlencodedataに変換していると思います:

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)
    })
}

ありがとう!

12
user3430761

私はよくこれをしたかったので、 https://kigiri.github.io/fetch/ を作成しました。curlコマンドをコピーして貼り付けると、フェッチコードが表示されます。

別の方法で使用する場合は、ソースをチェックアウトできます。

edit:この機能がchrome devtools devtool-as-fetch-opts ????????ありがとうchrome開発チーム????

20
kigiri

わかりましたので、基本的には別のものが必要です。したがって、それは約束と関係があります。この素晴らしい記事を読んだ後、私はそれを理解しました 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に応答データをオブジェクトとして返す方法を示すために、いくつかのreturnを追加しました。そう

var d = getObject();

応答をjsオブジェクトとして返します。

7
Charles Haro