• システム開発に関わる内容をざっくりと書いていく

フロントエンドとバックエンドの基本的なやり取り

フロントエンドとバックエンドの連携の中心にはHTTPリクエストレスポンスのやり取りがある。具体的には、以下のような流れでデータのやり取りが行われる。

1.基本的なフロー:

  1. フロントエンドがユーザーのアクションをトリガーに、サーバーにデータをリクエストする(例えば、フォーム送信やボタンのクリック)。
  2. バックエンドがリクエストを受け取り、データベースから必要な情報を取得、または処理を行う。
  3. バックエンドが処理結果をレスポンスとして返す。
  4. フロントエンドが受け取ったデータを画面に表示する。

このリクエストとレスポンスのやり取りは、通常JSON形式で行われることが多い。


2. APIの設計

API(Application Programming Interface)は、フロントエンドとバックエンドのデータ通信を行うためのインターフェース。一般的にREST APIGraphQLが利用される。

REST APIの基本:

  • エンドポイント: バックエンドが提供するURL(例: /api/users
  • HTTPメソッド: どの操作を行うかを示す(例: GET, POST, PUT, DELETE
    • GET: データの取得
    • POST: 新しいデータの作成
    • PUT: 既存データの更新
    • DELETE: データの削除
  • リクエストパラメータ: フロントエンドから送られるデータ(例: クエリパラメータやJSON形式のボディ)

REST APIはエンドポイントごとにリソースを扱い、シンプルでスケーラブルな設計が可能。一方、複数のデータを一度に取得したい場合などは、GraphQLが便利。GraphQLは、クエリ一つで複数のリソースを取得できる利点がある。


3. データのやり取りの基本

フロントエンドとバックエンドの間でデータをやり取りする際、通常はJSONXMLがデータ形式として利用される。近年では軽量なJSONが主流。

例: フロントエンドからバックエンドへのリクエスト

javascript
fetch('https://api.example.com/data', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: 'John Doe',
age: 30
})
})
.then(response => response.json())
.then(data => console.log(data));

バックエンドからフロントエンドへのレスポンス(例: JSON形式)

json
{
"status": "success",
"message": "Data received successfully",
"data": {
"name": "John Doe",
"age": 30
}
}

4. セキュリティの注意点

フロントエンドとバックエンドのやり取りにおいて、セキュリティは非常に重要。以下は、基本的なセキュリティのポイント。

1. 認証と認可

フロントエンドがバックエンドにアクセスする際、APIリクエストには認証が必要な場合がある。一般的にはJWT(JSON Web Token)やOAuthが利用される。これにより、ユーザーが正当な権限を持っているかどうかを確認する。

2. HTTPSの使用

通信を暗号化するために、必ずHTTPSを使用する。HTTP通信は平文でデータが送受信されるため、第三者による盗聴や改ざんのリスクがある。

3. CORS(クロスオリジンリソース共有)

バックエンドは、異なるオリジン(ドメイン)からのリクエストに対してセキュリティ制限を設けることができる。これはCORSの設定で制御され、特定のオリジンだけがリソースにアクセスできるようにする。

4. 入力値の検証

フロントエンドから受け取ったデータが安全であるかを検証する必要がある。特に、バックエンドでSQLインジェクションやクロスサイトスクリプティング(XSS)などの攻撃を防ぐため、受け取るデータを必ずサニタイズすることが重要。


まとめ

フロントエンドとバックエンドの連携は、Webアプリケーションの基本構造を形成する重要なプロセス。APIを通じて、データの送受信や処理を効率的に行うことができ、セキュリティ上の配慮も必要不可欠。基本を押さえておくことで、スムーズなシステム設計と安全なデータ通信が実現できる。