2015-06-25 13 views
5

sono in grado di recuperare con successo un oggetto da analizzare utilizzando il comando di seguito:Converti ricciolo arrivare al recupero JavaScript

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` 

Ma sto lottando convertirlo in javascript, usando il codice seguente mi metterò di risposta con un stato di 200. Presumo errore è la conversione dei dati -urlencode a dati:

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

Grazie!

+1

Non ho familiarità con 'fetch' ma sembra che non ci debbano essere virgolette singole attorno a' data', come 'data: {" dove ": {" uid ":" 12312312 "}}' – chiliNUT

+0

@ chiliNUT Ho appena provato questo, la stessa risposta in entrambi i casi, grazie però: 'body: (...), bodyUsed: false, header: Headers, ok: true, status: 200, statusText:" OK ", digitare:" cors ", url: "https://api.parse.com/1/classes/birthday" ' – user3430761

+0

hai risolto il problema? Sto provando qualcosa di simile, ma non importa quello che ho messo in dati, anche JSON malformato, ottengo tutti gli elementi dalla classe/Esegui. non sta filtrando nulla, né mi dà errori. quando faccio lo stesso con curl, ottengo "json error", che è la cosa giusta da ottenere – pvinis

risposta

3

Ok quindi in pratica ne hai bisogno di un altro. Quindi ha qualcosa a che fare con le promesse. Ho capito dopo aver letto questo articolo impressionante http://blog.gospodarets.com/fetch_in_action/

Quello che dovete fare è questo

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

} 

Io in realtà non capisco perché si deve tornare response.text(). Anche in questo caso si ha a che fare promesse

https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise

Perché quando accedo response.text() dalla prima poi. Restituisce una promessa.

Speriamo che qualche altro gentile gentiluomo possa commentare e spiegare perché restituire response.text() converte la promessa nei dati di cui hai bisogno.

--EDIT--

ho aggiunto alcuni ritorni per mostrare come si può avere getObject restituire i dati di risposta come un oggetto. Quindi

var d = getObject(); 

restituirà la risposta come oggetto js ora.

+0

Sì Charles! Ti amo: D – Pixelomo

9

Poiché volevo farlo spesso, ho effettuato https://kigiri.github.io/fetch/, è possibile copiare/incollare un comando di arricciatura che ti darà il codice di recupero.

È possibile eseguire il checkout dell'origine se si desidera utilizzarlo in modo diverso.

+0

Non funziona con i parametri -F. – user3696212

+0

@ user3696212 Ho aggiunto il supporto per -F, provalo e dimmi se hai qualche problema con esso. – kigiri

+0

Ti benedica per averlo fatto! – Ben