ReactJS - HTTPクライアントプログラミング

こんにちは、若手プログラマーさんたち!今日は、ReactJSとHTTPクライアントプログラミングの世界に楽しい冒険をすることになります。あなたの近所の親切なコンピュータ教師として、この冒険をステップバイステップで案内します。まずは、あなたのババルバックを持ち出して、始めましょう!

ReactJS - Http client programming

基本概念の理解

ReactJSにおけるHTTPクライアントプログラミングの詳細に踏み込む前に、まずは私たちが取り組む内容を理解しましょう。

HTTPとは?

HTTPはHypertext Transfer Protocolの略で、インターネット上でコンピュータがお互いに通信するための言語のようなものです。ウェブサイトを閲覧する際、あなたのコンピュータは絶えずHTTPリクエストを送信し、HTTPレスポンスを受信しています。

クライアントとは?

私たちの文脈では、クライアントは通常ウェブブラウザやモバイルアプリで、サーバーにリクエストを送信し、レスポンスを受け取ります。これをレストラン(サーバー)に食べ物(リクエスト)を注文するあなた(クライアント)として考えるとわかりやすいでしょう。

ReactJSとは?

ReactJSはユーザーインターフェースを構築するための人気のJavaScriptライブラリです。まるで魔法の道具箱のように、インタラクティブで動的なウェブアプリケーションを簡単に作成する手助けをしてくれます。

消費支出REST APIサーバー

さて、消費支出管理アプリケーションを構築していると仮定しましょう。バックエンドサーバーと通信して消費支出データを保存および取得する方法が必要です。ここで私たちの消費支出REST APIサーバーが登場します。

REST APIとは?

REST (Representational State Transfer) APIは、開発者がAPIを作成する際に従う一連のルールです。異なるソフトウェアアプリケーションがお互いに通信するための標準化された言語のようなものです。

以下は私たちの消費支出APIのシンプルな例です:

HTTPメソッド エンドポイント 説明
GET /expenses 全ての消費支出を取得
GET /expenses/:id 特定の消費支出を取得
POST /expenses 新しい消費支出を作成
PUT /expenses/:id 既存の消費支出を更新
DELETE /expenses/:id 消費支出を削除

fetch() API

APIの構造を理解したので、JavaScriptの組み込み関数fetch()を使ってそれと通信する方法を学びましょう。

fetch()とは?

fetch()関数は、JavaScriptでHTTPリクエストを行う現代的な方法です。サーバーにデータを取得または送信するためのメッセンジャーのようなものです。

以下にいくつかの例を見てみましょう:

全ての消費支出を取得

function getAllExpenses() {
fetch('https://api.example.com/expenses')
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
}

この例では:

  1. fetch()を使ってAPIエンドポイントにGETリクエストを送信します。
  2. レスポンスをJSON形式に変換します。
  3. データをコンソールに表示します。
  4. エラーが発生した場合、キャッチしてコンソールに表示します。

新しい消費支出を作成

function createExpense(expense) {
fetch('https://api.example.com/expenses', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(expense),
})
.then(response => response.json())
.then(data => console.log('Success:', data))
.catch(error => console.error('Error:', error));
}

// 使用例
const newExpense = { description: 'Lunch', amount: 15.99 };
createExpense(newExpense);

この例では:

  1. HTTPメソッドを'POST'に設定します。
  2. コンテンツタイプをJSONに設定します。
  3. 消費支出オブジェクトをJSON文字列に変換して本文に設定します。
  4. レスポンスを同様に処理します。

既存の消費支出を更新

function updateExpense(id, updatedExpense) {
fetch(`https://api.example.com/expenses/${id}`, {
method: 'PUT',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(updatedExpense),
})
.then(response => response.json())
.then(data => console.log('Success:', data))
.catch(error => console.error('Error:', error));
}

// 使用例
const updatedExpense = { description: 'Dinner', amount: 25.99 };
updateExpense(1, updatedExpense);

この例は新しい消費支出を作成する例と似ていますが、'PUT'メソッドを使用し、消費支出IDをURLに含めます。

消費支出を削除

function deleteExpense(id) {
fetch(`https://api.example.com/expenses/${id}`, {
method: 'DELETE',
})
.then(response => response.json())
.then(data => console.log('Success:', data))
.catch(error => console.error('Error:', error));
}

// 使用例
deleteExpense(1);

削除の際には、'DELETE'メソッドを指定し、消費支出IDをURLに含めます。

Reactコンポーネントとの統合

HTTPリクエストを行う方法を理解したので、これをReactコンポーネントにどのように統合するか見てみましょう。

import React, { useState, useEffect } from 'react';

function ExpenseList() {
const [expenses, setExpenses] = useState([]);

useEffect(() => {
fetch('https://api.example.com/expenses')
.then(response => response.json())
.then(data => setExpenses(data))
.catch(error => console.error('Error:', error));
}, []);

return (
<ul>
{expenses.map(expense => (
<li key={expense.id}>{expense.description}: ${expense.amount}</li>
))}
</ul>
);
}

このコンポーネントでは:

  1. useStateフックを使って消費支出の状態を管理します。
  2. useEffectフックを使ってコンポーネントがマウントされたときに消費支出を取得します。
  3. 消費支出をリストとしてレンダリングします。

結論

おめでとうございます!あなたはReactJSにおけるHTTPクライアントプログラミングの第一歩を踏み出しました。新しい言語を学ぶのと同じように、練習は完璧を生みます。実験を恐れず、間違えを犯して成長してください。

次のレッスンでは、エラーハンドリング、ローディングステート、よりrobustでユーザーフレンドリーな消費支出管理アプリケーションを構築する方法について探求します。それまでは、ハッピーコーディングを!

Credits: Image by storyset