⊗jsrxPmSDCl 44 of 57 menu

Reduxアプリケーションのクライアント

前回のレッスンで、私たちはアプリケーションのサーバー側の作業をほぼ完了しました。 次のレッスンで必要に応じて少し追加します。 これから、サーバーにHTTPリクエストを送信するアプリケーション用のクライアントを作成する必要があります。

商品管理アプリケーションを開き、 apiフォルダ内にファイルclient.jsを作成します。 まず、GETリクエストとPOSTリクエストの両方に対応する client関数自体を記述します。 パラメータとして、パス、メソッドタイプ、および(POSTの場合の)リクエストボディ(存在する場合)を受け取ります:

export async function client(url, method, body = {}) {}

次に、リクエストに関する様々な情報を渡すための optionsオブジェクトを構築する必要があります。 これにはリクエストメソッドとヘッダーが含まれます:

export async function client(url, method, body = {}) { const options = { method: method, headers: { 'Content-Type': 'application/json', }, } }

bodyプロパティはオプションです。POSTリクエストの場合にのみ渡す必要があります。 そのために、optionsオブジェクトのコードの後に、client関数内で、 メソッドがPOSTの場合にJSON形式のリクエストボディを含めてoptionsに追加します:

if (method === 'POST') { options.body = JSON.stringify(body) }

次に、clientのコードの下にtryブロックを構築します。 その最初の行でfetchを使用してサーバーからの応答を取得します。 失敗した場合は、従来通りエラーを含むPromiseを返します:

let data try { const response = await window.fetch(url, options) } catch (err) { return Promise.reject(err.message ? err.message : data) }

では、tryブロック内のコードを完成させましょう。 responseを取得した後、それを処理する必要があります。 そこからJSONデータを抽出し、応答ステータスが正常であることを示している場合は、 データと情報(ステータス、ヘッダー、URL)を含むオブジェクトを返します。 ステータスが'ok'でない場合は、ステータステキストを含む例外をスローします:

try { const response = await window.fetch(url, options) data = await response.json() if (response.ok) { return { status: response.status, headers: response.headers, url: response.url, data, } } throw new Error(response.statusText) }

client関数のコードはこれで完了です。あとは、 呼び出されたときにGETメソッドとPOSTメソッドがどのように動作するかを記述するだけです。 client関数の後にそれらのコードを書きましょう。 client.getメソッドはパスをパラメータとして受け取り、 client関数を呼び出して、そのパスとリクエストタイプGETを渡します:

client.get = (url) => client(url, 'GET')

一方、client.postは、clientに対して、 パス、リクエストタイプPOST、およびリクエストボディを渡す必要があります:

client.post = (url, body) => client(url, 'POST', body)

以上です。私たちの小さなクライアントはサーバーとの通信準備が整いました。

学生管理アプリケーションを開き、 そのapiフォルダ内にファイルclient.jsを作成してください。 レッスンの教材を確認した上で、 (コピーして)client関数とその2つのメソッド client.getおよびclient.postのコードを記述してください。

日本語
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItalianoქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
当サイトでは、サイトの動作、分析、パーソナライゼーションのためにクッキーを使用しています。 データ処理はプライバシーポリシーに従って行われます。
すべて受け入れる 設定 拒否