zlFetch ist ein Wrapper für Fetch, der Ihnen eine bequeme Möglichkeit bietet, Anfragen zu stellen.
Seine Funktionen sind wie folgt:
Verbesserungen der Lebensqualität gegenüber der nativen fetch
response.json()
, response.text()
oder response.blob()
zu verwenden.catch
-Block weitergeleitet.await
– Fehler können zurückgegeben werden, sodass Sie keinen try/catch
-Block schreiben müssen. Zusätzliche Verbesserungen gegenüber der nativen fetch
Content-Type
Header werden automatisch basierend auf dem body
festgelegt.headers
, body
, status
und mehr.GET
, POST
, PUT
, PATCH
und DELETE
auth
Eigenschaft. Hinweis: zlFetch ist seit v4.0.0
eine ESM-Bibliothek.
# Installing through npm
npm install zl-fetch --save
Anschließend können Sie es verwenden, indem Sie es in Ihre JavaScript-Datei importieren.
import zlFetch from 'zl-fetch'
zlFetch
ohne npm
:Sie können zlFetch über ein CDN direkt in JavaScript importieren.
Dazu müssen Sie zunächst den Typ Ihres script
auf module
festlegen und dann zlFetch
importieren.
< script type =" module " >
import zlFetch from 'https://cdn.jsdelivr.net/npm/[email protected]/src/index.js'
</ script >
Sie können zlFetch wie eine normale fetch
verwenden. Der einzige Unterschied besteht darin, dass Sie keine response.json
oder response.text
-Methode mehr schreiben müssen!
zlFetch erledigt dies automatisch für Sie, sodass Sie Ihre Antwort direkt verwenden können.
zlFetch ( 'url' )
. then ( response => console . log ( response ) )
. catch ( error => console . log ( error ) )
zlFetch enthält Kurzmethoden für diese gängigen REST-Methoden, sodass Sie sie schnell verwenden können.
zlFetch . get ( /* some-url */ )
zlFetch . post ( /* some-url */ )
zlFetch . put ( /* some-url */ )
zlFetch . patch ( /* some-url */ )
zlFetch . delete ( /* some-url */ )
zlFetch unterstützt die Antworttypen json
, text
und blob
sodass Sie nicht response.json()
, response.text()
oder response.blob()
schreiben müssen.
Andere Antworttypen werden derzeit nicht unterstützt. Wenn Sie andere Antworttypen unterstützen müssen, sollten Sie die Verwendung eines eigenen Antworthandlers in Betracht ziehen
zlFetch sendet Ihnen alle benötigten Daten im response
. Dazu gehört Folgendes:
headers
: Antwortheaderbody
: Antworttextstatus
: AntwortstatusstatusText
: Antwortstatustextresponse
: Originalantwort von Fetch Wir tun dies, damit Sie die headers
, status
, statusText
oder sogar den Rest des response
nicht selbst herausfischen müssen.
Neu in v4.0.0
: Sie können das Anforderungsobjekt debuggen, indem Sie eine debug
-Option hinzufügen. Dadurch wird ein debug
-Objekt angezeigt, das die zu erstellende Anforderung enthält.
url
method
headers
body
zlFetch ( 'url' , { debug : true } )
. then ( { debug } = > console . log ( debug ) )
zlFetch leitet alle 400- und 500-Fehler an die catch
-Methode weiter. Fehler enthalten dieselben Informationen wie eine Antwort.
headers
: Antwortheaderbody
: Antworttextstatus
: AntwortstatusstatusText
: Antwortstatustextresponse
: Originalantwort vom AbrufDies macht die Verwendung von zlFetch mit Versprechen sehr einfach.
zlFetch ( 'some-url' ) . catch ( error => {
/* Handle error */
} )
// The above request can be written in Fetch like this:
fetch ( 'some-url' )
. then ( response => {
if ( ! response . ok ) {
Promise . reject ( response . json )
}
} )
. catch ( error => {
/* Handle error */
} )
async
/ await
Mit zlFetch können Sie alle Fehler an ein errors
übergeben. Sie können dies tun, indem Sie eine returnError
-Option hinzufügen. Dies ist nützlich, wenn Sie viel mit async/await
arbeiten.
const { response , error } = await zlFetch ( 'some-url' , { returnError : true } )
Sie können optional eine oder queries
query
hinzufügen und zlFetch erstellt automatisch eine Abfragezeichenfolge für Sie. Verwenden Sie dies mit GET
-Anfragen.
zlFetch ( 'some-url' , {
queries : {
param1 : 'value1' ,
param2 : 'to encode' ,
} ,
} )
// The above request can be written in Fetch like this:
fetch ( 'url?param1=value1¶m2=to%20encode' )
Content-Type
basierend auf dem body
zlFetch legt Content-Type
abhängig von Ihren body
entsprechend fest. Es unterstützt drei Arten von Daten:
Wenn Sie ein object
übergeben, setzt zlFetch Content-Type
auf application/json
. Außerdem wird Ihr Körper JSON.stringify
, sodass Sie es nicht selbst tun müssen.
zlFetch . post ( 'some-url' , {
body : { message : 'Good game' } ,
} )
// The above request is equivalent to this
fetch ( 'some-url' , {
method : 'post' ,
headers : { 'Content-Type' : 'application/json' } ,
body : JSON . stringify ( { message : 'Good game' } ) ,
} )
zlFetch enthält einen toObject
Helfer, mit dem Sie Formulardaten in ein Objekt konvertieren können. Dies macht es super einfach, zlFetch mit Formularen durchzuführen.
import { toObject } from 'zl-fetch'
const data = new FormData ( form . elements )
zlFetch ( 'some-url' , {
body : toObject ( data ) ,
} )
Wenn Sie eine Zeichenfolge übergeben, setzt zlFetch Content-Type
auf application/x-www-form-urlencoded
.
zlFetch enthält außerdem eine toQueryString
-Methode, die Ihnen beim Konvertieren von Objekten in Abfragezeichenfolgen helfen kann, sodass Sie diese Option problemlos verwenden können.
import { toQueryString } from 'zl-fetch'
zlFetch . post ( 'some-url' , {
body : toQueryString ( { message : 'Good game' } ) ,
} )
// The above request is equivalent to this
fetch ( 'some-url' , {
method : 'post' ,
headers : { 'Content-Type' : 'application/x-www-form-urlencoded' } ,
body : 'message=Good%20game' ,
} )
Wenn Sie Formulardaten übergeben, lässt zlFetch die native fetch
den Content-Type
verarbeiten. Im Allgemeinen werden dabei multipart/form-data
mit den Standardoptionen verwendet. Wenn Sie dies verwenden, stellen Sie sicher, dass Ihr Server multipart/form-data
empfangen kann!
import { toObject } from 'zl-fetch'
const data = new FormData ( form . elements )
zlFetch ( 'some-url' , { body : data } )
// The above request is equivalent to this
fetch ( 'some-url' , { body : data } )
// Your server should be able to receive multipart/form-data if you do this. If you're using Express, you can a middleware like multer to make this possible:
import multer from 'multer'
const upload = multer ( )
app . use ( upload . array ( ) )
Breaking Change in v5.0.0
: Wenn Sie einen Content-Type
Header übergeben, legt zlFetch das Format Ihres Textinhalts nicht mehr fest. Wir erwarten, dass Sie den richtigen Datentyp übergeben können. (Wir mussten dies tun, um die oben erwähnte neue API zu unterstützen).
Wenn Sie zlFetch eine auth
bereitstellen, wird ein Autorisierungsheader für Sie generiert.
Wenn Sie eine string
übergeben (normalerweise für Token), wird eine Bearer-Authentifizierung generiert.
zlFetch ( 'some-url' , { auth : 'token12345' } )
// The above request can be written in Fetch like this:
fetch ( 'some-url' , {
headers : { Authorization : `Bearer token12345` } ,
} )
Wenn Sie ein object
übergeben, generiert zlFetch eine Basisauthentifizierung für Sie.
zlFetch ( 'some-url' , {
auth : {
username : 'username'
password : '12345678'
}
} )
// The above request can be written in Fetch like this:
fetch ( 'some-url' , {
headers : { Authorization : `Basic ${ btoa ( 'username:12345678' ) } ` }
} ) ;
Sie können eine Instanz von zlFetch
mit vordefinierten Optionen erstellen. Dies ist sehr hilfreich, wenn Sie Anfragen mit ähnlichen options
oder url
senden müssen.
url
ist erforderlichoptions
sind optional import { createZLFetch } from 'zl-fetch'
// Creating the instance
const api = zlFetch ( baseUrl , options )
Alle Instanzen verfügen auch über Kurzschriftmethoden.
// Shorthand methods
const response = api . get ( /* ... */ )
const response = api . post ( /* ... */ )
const response = api . put ( /* ... */ )
const response = api . patch ( /* ... */ )
const response = api . delete ( /* ... */ )
Neu in v5.0.0
Sie können jetzt eine zlFetch
Instanz verwenden, ohne eine URL zu übergeben. Dies ist nützlich, wenn Sie eine Instanz mit den richtigen Endpunkten erstellt haben.
import { createZLFetch } from 'zl-fetch'
// Creating the instance
const api = zlFetch ( baseUrl , options )
Alle Instanzen verfügen auch über Kurzschriftmethoden.
// Shorthand methods
const response = api . get ( ) // Without URL, without options
const response = api . get ( 'some-url' ) // With URL, without options
const response = api . post ( 'some-url' , { body : 'message=good+game' } ) // With URL, with options
const response = api . post ( { body : 'message=good+game' } ) // Without URL, with options
Wenn Sie eine Antwort verarbeiten möchten, die von zlFetch nicht unterstützt wird, können Sie customResponseParser: true
in die Optionen übergeben. Dies gibt die Antwort einer normalen Abrufanforderung ohne zusätzliche Behandlungen von zlFetch zurück. Sie können dann je nach Bedarf response.json()
oder andere Methoden verwenden.
const response = await zlFetch ( 'url' , {
customResponseParser : true ,
} )
const data = await response . arrayBuffer ( )