IT未経験者でも分かりやすく学べる技術ブログ
クライアントとサーバーの基礎
2025-01-08
クライアントとサーバーはWebアプリケーションを構築する主要な技術領域です。
HTMLやJavaScript(Web)、FlutterやKotlin(IOS/Android)などで実装されます。
HTTPやRESTの通信方式に則って、フロントエンドと通信しアプリケーションの処理を実現しています。
PythonやGolang、JavaScript、Java、Cなどの言語で実装されます。
本ブログでは、主に以下の言語でのバックエンド実装について説明していきます。
ここでは「クライアント」と「サーバー」の通信について解説します。
先ほどクライアントとサーバーについて解説しました。
クライアントとサーバーそれぞれの役割は以下になります。
[クライアント] → リクエスト → [サーバー]
↓ ↓
操作内容を送信 データを処理して応答
↑ ↑
[クライアント] ← レスポンス ← [サーバー]
両者の通信は基本的にHTTPと呼ばれる通信プロトコルで通信されています。
このHTTP通信においてクライアントとサーバーの間では以下のようなやりとりが行われています。
例) SNSサービスにおいて画面に投稿一覧が表示される。
[クライアント] → "GET /posts" → [サーバー]
↓ ↓
サーバーにリクエスト送信 データベースから取得
↑ ↑
[クライアント] ← 投稿一覧データ ← [サーバー]
主に上記のようにクライアントはリクエストを送信し、サーバーはレスポンスを返します。
これがざっくりとしたHTTPリクエスト・レスポンスによる通信概念です。
HTTPリクエストでは、どんな処理をサーバーに求めるかというメソッドや各種情報(ブラウザや形式など)を付与したヘッダー情報、データ登録や更新ではリクエストボディをサーバーに送信します。
ここまででHTTP通信の仕組みを学びました。
次の章では、それを活用した具体的なAPI通信について見ていきます
ここでは、クライアントとサーバー間でのデータ受け渡しなどの通信を行う手法について解説します。
現在では先ほど説明したHTTP通信に則ったHTTP API通信方式がメインとなっています。
その中でもREST原則に則ったRESTfulなAPI(RestAPI)でのサーバーサイド実装が主流となっているため本章ではRestAPIについて解説します。
そもそもAPI(アプリケーションプログラミングインターフェース)とは以下のようなものになります。
あるアプリケーションを外部の別のサービスから呼び出せるインターフェース
例えば、Twitter APIなどは自身の作成したサービス内でTwitterの投稿などを引用したいときに提供されるuriを実行すれば取得できます。
APIはURL形式で発行されるため、言語実行環境やシステムに依存しない開発が可能になります。
REST APIとは、REST設計原則に基づいたAPIということです。
REST設計原則とは以下のような概念です。
RESTとは、リソースをURIで一意に識別し、HTTPメソッドを使って操作する設計原則です。
具体的にはリンクの記事で紹介します。
あくまでもクライアントと通信するためにバックエンドのサーバーでAPIを発行しましょうということです。
つまり前章で、GETメソッドによるデータ取得の流れを解説しました。
この粒度で各機能ごとにAPIを構築すると以下のようになります。
HTTPメソッド | 用途 | 例 |
---|---|---|
GET | データ取得 | GET /posts |
POST | データ登録 | POST /posts |
PUT | データ更新 | PUT /posts/1 |
DELETE | データ削除 | DELETE /posts/1 |
あくまでメソッドが違えば違うuriになります。
このように設計することでフロントエンドはメソッド指定で各uri(エンドポイント)にアクセスすると指示された処理を実行します。
実際のエンドポイントや実際のレスポンスの設計方法についてはREST API設計についてで解説します。
この記事を書いた人
Tさん
別業界から転職1年で
Webフルスタックとして活動中
これからエンジニアになりたい!
駆け出しエンジニアが最短で
成長できる方法を発信
関連記事
バックエンドってなに?