--- title: Fetch API slug: Web/API/Fetch_API tags: - API - Documentazione - Fetch - Response - Sperimentale - XMLHttpRequest - request translation_of: Web/API/Fetch_API ---
{{DefaultAPISidebar("Fetch API")}}{{ SeeCompatTable }}
La Fetch API fornisce un'interfaccia per ottenere risorse (anche attraverso la rete). Sembrerá familiare a tutti coloro che hanno usato {{domxref("XMLHttpRequest")}}, ma la nuova API fornisce un'insieme piú potente e flessibile di funzionalitá.
Fetch fornisce una definizione generica di oggetti {{domxref("Request")}} e {{domxref("Response")}} (e altri inclusi nelle richieste di rete). Questo permette loro di essere usati ovunque necessari, in futuro, sia che servano per service workers, Cache API e altri oggetti simili che usano o modificano richieste e risposte, sia per qualunque altro caso d'uso che richieda di generare le proprie risposte via codice.
Esso fornisce anche una definizione per concetti correlati come CORS e la semantica degli header HTTP di tipo origin, ovviando alla necessità di doverli definire separatamente altrove.
Per effettuare una richiesta e ottenere una risorsa, si usa il metodo {{domxref("GlobalFetch.fetch")}}. Esso è implementato in piú interfacce (specificatamente {{domxref("Window")}} e {{domxref("WorkerGlobalScope")}}). Questo lo rende disponibile all'incirca in ogni contesto in cui si puó voler ottenere risorse.
Il metodo fetch()
richiede un parametro obbligatorio, il percorso (path) alla risorsa che si vuole ottenere, e ritorna una {{domxref("Promise")}} che risolve la {{domxref("Response")}} a quella richiesta, sia essa stata eseguita con successo oppure no. Si puó anche passare in via opzionale un oggetto init
(per definire opzioni facoltative) come secondo parametro (per l'elenco completo delle opzioni visitare {{domxref("Request")}}).
Non appena una {{domxref("Response")}} è recuperata, vi è un certo numero di metodi disponibile allo scopo di definire cosa sia il corpo della risposta e come dovrebbe essere gestito (in dettaglio : {{domxref("Body")}}.)
È possibile creare una richiesta e una risposta direttamente usando i costruttori delle classi {{domxref("Request.Request","Request()")}} e {{domxref("Response.Response","Response()")}}, ma non e' una pratica comune. Invece, e' piu' frequente che essi vengano creati come risultato delle altre azioni della API (ad esempio, {{domxref("FetchEvent.respondWith")}} dei service workers.)
Note: Puoi trovare informazioni aggiuntive riguardo l'uso di fetch sulla pagina Using Fetch, e studiare i concetti sulla pagina Fetch basic concepts.
I browsers hanno cominciato a supportare in via sperimentale le interfacce {{domxref("AbortController")}} e {{domxref("AbortSignal")}} (meglio note come Abort API), che permettono di annullare operazioni come Fetch e XHR quando non sono ancora state completate. Per maggiori informazioni controlla la pagina con la descrizione delle interfacce.
fetch()
usato per ottenere una risorsa.Specifiche | Stato | Commento |
---|---|---|
{{SpecName('Fetch')}} | {{Spec2('Fetch')}} | Definizione di cui sopra |
{{ CompatibilityTable() }}
Feature | Chrome | Edge | Firefox (Gecko) | IE | Opera | Safari (WebKit) |
---|---|---|---|---|---|---|
Supporto base | {{CompatChrome(42)}} | 14 | {{CompatGeckoDesktop(39)}} 34[1] {{ CompatGeckoDesktop(52)}}[2] |
{{CompatNo}} | 29 28[1] |
10.1 |
{{domxref('ReadableStream')}} | {{CompatChrome(43)}} | 14 | {{CompatNo}}[3] | {{CompatNo}} | {{CompatUnknown}} | {{CompatNo}} |
Feature | Android Webview | Chrome for Android | Edge | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|---|
Supporto base | {{CompatChrome(42)}} | {{CompatChrome(42)}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatNo}} | {{CompatNo}} | 10.1 |
{{domxref('ReadableStream')}} | {{CompatChrome(43)}} | {{CompatChrome(43)}} | {{CompatVersionUnknown}} | {{CompatNo}}[3] | {{CompatNo}} | {{CompatUnknown}} | {{CompatNo}} |
[1] Questa API è implementata ma dev'essere abilitata da un'opzione di Firefox.
[2] Per le versioni di Firefox precedenti la 52, get()
ottiene solamente il primo valore nell'header specificato, mentre getAll()
ottiene tutti i valori. Dalla versione 52 in avanti, get()
ottiene tutti i valori e getAll()
è stato eliminato.
[3] La lettura degli streams è disponibile nell'attuale versione di Firefox, ma deve essere abilitata tramite le opzioni dom.streams.enabled
e javascript.options.streams
.