zlFetch は、リクエストを行うための便利な方法を提供するフェッチのラッパーです。
その特徴は次のとおりです。
ネイティブfetch
機能よりも生活の質が向上
response.json()
、 response.text()
、またはresponse.blob()
を使用せずに、応答をすぐに使用します。catch
ブロックに送られます。await
を使用する場合の簡単なエラー処理 — エラーを返すことができるため、 try/catch
ブロックを記述する必要はありません。ネイティブfetch
機能に対する追加の改善
Content-Type
ヘッダーは、 body
内容に基づいて自動的に設定されます。headers
、 body
、 status
など、応答に関して必要なすべてを取得します。GET
、 POST
、 PUT
、 PATCH
、およびDELETE
メソッドの短縮形auth
プロパティを使用して認証ヘッダーを生成します。注: zlFetch はv4.0.0
以降の ESM ライブラリです。
# Installing through npm
npm install zl-fetch --save
その後、JavaScript ファイルにインポートして使用できるようになります。
import zlFetch from 'zl-fetch'
npm
を使用せずにzlFetch
使用する:CDN を通じて zlFetch を JavaScript に直接インポートできます。
これを行うには、まずscript
のタイプをmodule
に設定し、次にzlFetch
インポートする必要があります。
< script type =" module " >
import zlFetch from 'https://cdn.jsdelivr.net/npm/[email protected]/src/index.js'
</ script >
zlFetch は、通常のfetch
関数と同じように使用できます。唯一の違いは、 response.json
メソッドやresponse.text
メソッドを記述する必要がなくなったことです。
zlFetch が自動的に処理するため、応答の使用に直接進むことができます。
zlFetch ( 'url' )
. then ( response => console . log ( response ) )
. catch ( error => console . log ( error ) )
zlFetch には、これらの一般的な REST メソッドの短縮メソッドが含まれているため、これらをすぐに使用できます。
zlFetch . get ( /* some-url */ )
zlFetch . post ( /* some-url */ )
zlFetch . put ( /* some-url */ )
zlFetch . patch ( /* some-url */ )
zlFetch . delete ( /* some-url */ )
zlFetch はjson
、 text
、およびblob
応答タイプをサポートしているため、 response.json()
、 response.text()
またはresponse.blob()
を記述する必要はありません。
他の応答タイプは現在サポートされていません。他の応答タイプをサポートする必要がある場合は、独自の応答ハンドラーの使用を検討してください。
zlFetch は、必要なすべてのデータをresponse
オブジェクトで送信します。これには次のものが含まれます。
headers
: 応答ヘッダーbody
: レスポンスボディstatus
: 応答ステータスstatusText
: 応答ステータスのテキストresponse
: Fetch からの元の応答これは、 headers
、 status
、 statusText
、さらにはresponse
オブジェクトの残りの部分を自分で検索する必要がないようにするためです。
v4.0.0
の新機能: debug
オプションを追加することで、リクエスト オブジェクトをデバッグできます。これにより、構築中のリクエストを含むdebug
オブジェクトが表示されます。
url
method
headers
body
zlFetch ( 'url' , { debug : true } )
. then ( { debug } = > console . log ( debug ) )
zlFetch は、すべての 400 エラーと 500 エラーをcatch
メソッドに送ります。エラーには応答と同じ情報が含まれます。
headers
: 応答ヘッダーbody
: レスポンスボディstatus
: 応答ステータスstatusText
: 応答ステータスのテキストresponse
: フェッチからの元の応答これにより、zlFetch を Promise で使用するのが非常に簡単になります。
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
使用する場合の簡単なエラー処理zlFetch を使用すると、すべてのエラーをerrors
オブジェクトに渡すことができます。これを行うには、 returnError
オプションを追加します。これは、 async/await
を頻繁に使用する場合に便利です。
const { response , error } = await zlFetch ( 'some-url' , { returnError : true } )
オプションとしてquery
queries
追加すると、zlFetch がクエリ文字列を自動的に作成します。これをGET
リクエストで使用します。
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' )
body
内容に基づいたContent-Type
生成zlFetch は、 body
データに応じてContent-Type
適切に設定します。次の 3 種類のデータをサポートします。
object
を渡すと、 zlFetch はContent-Type
application/json
に設定します。また、本文JSON.stringify
するので、自分で行う必要はありません。
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 には、フォーム データをオブジェクトに変換できるtoObject
ヘルパーが含まれています。これにより、フォームでの zlFetch が非常に簡単になります。
import { toObject } from 'zl-fetch'
const data = new FormData ( form . elements )
zlFetch ( 'some-url' , {
body : toObject ( data ) ,
} )
文字列を渡すと、zlFetch はContent-Type
をapplication/x-www-form-urlencoded
に設定します。
zlFetch には、オブジェクトをクエリ文字列に変換するのに役立つtoQueryString
メソッドも含まれているため、このオプションを簡単に使用できます。
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' ,
} )
Form Data を渡すと、zlFetch はネイティブのfetch
関数にContent-Type
を処理させます。通常、これはデフォルトのオプションでmultipart/form-data
使用します。これを使用する場合は、サーバーがmultipart/form-data
受信できることを確認してください。
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 ( ) )
v5.0.0
の重大な変更: Content-Type
ヘッダーを渡すと、zlFetch は本文コンテンツのフォーマットを設定しなくなります。正しいデータ型を渡すことができることが期待されます。 (上記の新しい API をサポートするためにこれを行う必要がありました)。
zlFetch にauth
プロパティを指定すると、認証ヘッダーが生成されます。
string
(通常はトークン用) を渡すと、Bearer Auth が生成されます。
zlFetch ( 'some-url' , { auth : 'token12345' } )
// The above request can be written in Fetch like this:
fetch ( 'some-url' , {
headers : { Authorization : `Bearer token12345` } ,
} )
object
を渡すと、zlFetch は Basic 認証を生成します。
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' ) } ` }
} ) ;
事前定義されたオプションを使用してzlFetch
のインスタンスを作成できます。これは、同様のoptions
またはurl
を使用してリクエストを送信する必要がある場合に非常に役立ちます。
url
は必須ですoptions
は任意です import { createZLFetch } from 'zl-fetch'
// Creating the instance
const api = zlFetch ( baseUrl , options )
すべてのインスタンスには短縮メソッドもあります。
// Shorthand methods
const response = api . get ( /* ... */ )
const response = api . post ( /* ... */ )
const response = api . put ( /* ... */ )
const response = api . patch ( /* ... */ )
const response = api . delete ( /* ... */ )
v5.0.0
の新機能
URL を渡さずにzlFetch
インスタンスを使用できるようになりました。これは、適切なエンドポイントを使用してインスタンスを作成した場合に便利です。
import { createZLFetch } from 'zl-fetch'
// Creating the instance
const api = zlFetch ( baseUrl , options )
すべてのインスタンスには短縮メソッドもあります。
// 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
zlFetch でサポートされていない応答を処理したい場合は、 customResponseParser: true
オプションに渡すことができます。これにより、zlFetch からの追加処理を行わずに、通常のフェッチ要求からの応答が返されます。その後、 response.json()
または必要に応じて他のメソッドを使用できます。
const response = await zlFetch ( 'url' , {
customResponseParser : true ,
} )
const data = await response . arrayBuffer ( )