2016-09-19 2 views
10

Ich weiß, dass mit dem neuen Fetch API Sie eine GET-Anforderung wie diese machen können (async/await hier mit ES2017 Jahren verwendet):POST-Anfrage mit Fetch API?

async getData() { 
    try { 
     let response = await fetch('https://example.com/api'); 
     let responseJson = await response.json(); 
     console.log(responseJson); 
    } catch(error) { 
     console.error(error); 
    } 
} 

Aber wie stellen Sie eine POST-Anforderung?

+2

Du conflating zwei verschiedene Dinge gibt: JavaScript bevorstehenden 'async' /' await', und die (völlig getrennt) [Fetch API] (https://fetch.spec.whatwg.org/). Deine Frage hat nichts mit JavaScript's 'async' /' await' zu tun, sondern mit 'fetch'. (Beachten Sie auch, dass die neue Fetch-API genau das ist, neu und so [die Unterstützung ist auf hochmoderne Browser beschränkt] (http://caniuse.com/#feat=fetch).) –

+0

@ jfriend00: Ich habe es gemacht Sie. –

Antwort

23

Lange Rede kurzer Sinn, Fetch auch ermöglicht es Ihnen, ein Objekt für eine personalisierte Anfrage weitergeben müssen:

out
fetch("http://example.com/api/endpoint/", { 
    method: "post", 
    headers: { 
    'Accept': 'application/json', 
    'Content-Type': 'application/json' 
    }, 

    //make sure to serialize your JSON body 
    body: JSON.stringify({ 
    name: myName, 
    password: myPassword 
    }) 
}) 
.then((response) => { 
    //do something awesome that makes the world a better place 
}); 

Überprüfen Sie die Dokumentation für noch mehr gute Sachen und gotchas holen:

https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch

Bitte beachten Sie, dass Sie die then() Funktion in meinem Beispiel weglassen, da Sie ein asynchrones Try/Catch-Muster machen;)

4

Wenn Sie eine einfache Post-Anfrage machen möchten, ohne Daten als JSON zu senden.

fetch("/url-to-post",{ 
     method: "POST", 
     //what ever data you want to post with key value pair   
     body: "name=manas&age=20", 
     headers: { 
      "Content-Type": "application/x-www-form-urlencoded" 
     }).then((response) => { 
     //do something awesome that makes the world a better place 
});