Sök…


Syntax

  • lovande = hämta (url) .then (funktion (svar) {})
  • löfte = hämta (url, alternativ)
  • löfte = hämta (begär)

parametrar

alternativ detaljer
method HTTP-metoden som ska användas för begäran. ex: GET , POST , PUT , DELETE , HEAD . Standardinställningar för GET .
headers Ett Headers objekt som innehåller ytterligare HTTP-rubriker att inkludera i begäran.
body Begäran nyttolast, kan vara en string eller ett FormData objekt. Standardvärden är undefined
cache Cache-läget. default , reload , no-cache
referrer Hänvisaren till begäran.
mode cors , no-cors , same-origin . Standardvärdet för no-cors .
credentials omit , same-origin , include . Standard att omit .
redirect follow , error , manual . Standard att follow .
integrity Associerade integritetsmetadata. Standard som tom sträng.

Anmärkningar

Fetch-standarden definierar förfrågningar, svar och processen som binder dem: hämta.

Bland andra gränssnitt definierar standarden Request and Response Objects, utformade för att användas för alla operationer som involverar nätverksförfrågningar.

En användbar applikation av dessa gränssnitt är GlobalFetch , som kan användas för att ladda fjärrresurser.

För webbläsare som ännu inte stöder Fetch-standarden har GitHub en polyfyll tillgänglig. Dessutom finns det en Node.js-implementering som är användbar för server / klientkonsistens.

I avsaknad av avbokningsbara löften kan du inte avbryta hämtningsbegäran ( github-fråga ). Men det finns ett förslag från T39 i steg 1 om avbokningsbara löften.

GlobalFetch

GlobalFetch- gränssnittet visar fetch , som kan användas för att begära resurser.

fetch('/path/to/resource.json')
    .then(response => {
        if (!response.ok()) {
            throw new Error("Request failed!");
        }
            
        return response.json();
    })
    .then(json => { 
        console.log(json);
    }); 

Det beslutade värdet är ett svar Object. Det här objektet innehåller svarets kropp, såväl som status och rubriker.

Ställ in begärhuvud

fetch('/example.json', {
    headers: new Headers({
        'Accept': 'text/plain',
        'X-Your-Custom-Header': 'example value'
    })
});

POST-data

Posterar formulärdata

fetch(`/example/submit`, {
    method: 'POST',
    body: new FormData(document.getElementById('example-form'))
});

Posterar JSON-data

fetch(`/example/submit.json`, {
    method: 'POST',
    body: JSON.stringify({
        email: document.getElementById('example-email').value,
        comment: document.getElementById('example-comment').value
    })
});

Skicka kakor

Hämtningsfunktionen skickar inte cookies som standard. Det finns två möjliga sätt att skicka cookies:

  1. Skicka bara kakor om webbadressen har samma ursprung som det samtalskriptet.
fetch('/login', {
    credentials: 'same-origin'
})
  1. Skicka alltid cookies, även för samtal mellan andra länder.
fetch('https://otherdomain.com/login', {
    credentials: 'include'
})

Få JSON-data

// get some data from stackoverflow
fetch("https://api.stackexchange.com/2.2/questions/featured?order=desc&sort=activity&site=stackoverflow")
  .then(resp => resp.json())
  .then(json => console.log(json))
  .catch(err => console.log(err));

Använda Fetch för att visa frågor från Stack Overflow API

const url =
      'http://api.stackexchange.com/2.2/questions?site=stackoverflow&tagged=javascript';

const questionList = document.createElement('ul');
document.body.appendChild(questionList);

const responseData = fetch(url).then(response => response.json());
responseData.then(({items, has_more, quota_max, quota_remaining}) => {
  for (const {title, score, owner, link, answer_count} of items) {
    const listItem = document.createElement('li');
    questionList.appendChild(listItem);
    const a = document.createElement('a');
    listItem.appendChild(a);
    a.href = link;
    a.textContent = `[${score}] ${title} (by ${owner.display_name || 'somebody'})`
  }
});


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow