Java | Web 基礎・HTTP・REST:Web 全体像 - Web アプリの仕組み

Java Java
スポンサーリンク

Web 全体像をざっくりつかむ

まずは「ブラウザで URL を開くと、裏で何が起きているのか」をイメージでつかみましょう。
あなたがブラウザに https://example.com と入力して Enter を押すと、ブラウザは「サーバー」に対して「そのページをください」とお願いを送ります。
この「お願い」が HTTP リクエスト、サーバーから返ってくる「結果」が HTTP レスポンス です。

ブラウザは、受け取ったレスポンスの中の HTML・CSS・JavaScript を解釈して、画面にページを描画します。
つまり、
ブラウザ=お願いする側(クライアント)
サーバー=応える側(サーバー)
HTTP=その間でやり取りするルール(プロトコル)
という構図になっています。


Web アプリと「ただの Web ページ」の違い

静的サイトと Web アプリ

「ただの Web ページ」は、あらかじめ用意された HTML ファイルをそのまま返すだけの世界です。
会社の紹介ページや、ほとんど更新されない情報ページなどが典型です。

一方、Web アプリは「リクエストの内容に応じて、その場で結果を計算して返す」仕組みを持っています。
ログイン、検索、ショッピングカート、チャット、管理画面など、ユーザーごと・タイミングごとに結果が変わるものは、すべて Web アプリです。

Java で作るのは基本的にこの「Web アプリ」の側です。
サーバー側で Java プログラムが動き、リクエストの内容を見て、データベースを読んだり計算したりして、HTML や JSON を組み立てて返します。


HTTP リクエストとレスポンスのイメージ

リクエストは「手紙」、レスポンスは「返事」

HTTP リクエストには、ざっくり次のような情報が入っています。
どの URL に対するものか(パス)
どんな操作をしたいか(GET、POST などのメソッド)
追加情報(ヘッダ、ボディ)

例えば、ブラウザでユーザー一覧ページを開くとき、サーバーにはこんなイメージのリクエストが飛びます。

GET /users HTTP/1.1
Host: example.com
User-Agent: ...
Accept: text/html

サーバーはそれを受け取って、こんなレスポンスを返します。

HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8

<html>...</html>

Java の Web アプリは、この「リクエストを受け取ってレスポンスを返す」処理を、プログラムとして書いていくことになります。


Java Web アプリのざっくりした流れ

1. ブラウザからリクエストが飛んでくる

ユーザーがブラウザでボタンを押したり、フォームを送信したりすると、HTTP リクエストがサーバーに届きます。
URL と HTTP メソッド(GET/POST など)によって、「どの処理に振り分けるか」が決まります。

Java の世界では、Spring MVC などを使うと、次のようなコードで「どの URL に来たらどのメソッドを呼ぶか」を書けます。

@GetMapping("/users")
public String listUsers(Model model) {
    var users = userService.findAll();
    model.addAttribute("users", users);
    return "users/list"; // テンプレート名
}
Java

/users に GET でアクセスが来たら、このメソッドが呼ばれる、というイメージです。

2. サーバー側で処理・データ取得を行う

コントローラ(上のメソッド)は、サービスやリポジトリを呼び出して、データベースからデータを取得したり、ビジネスロジックを実行したりします。

public List<User> findAll() {
    return userRepository.findAll();
}
Java

ここで、
「どのデータを取るか」
「どんな条件で絞るか」
「どんな計算をするか」
といったアプリ固有のロジックが動きます。

3. 結果を HTML や JSON にして返す

取得したデータを、テンプレートエンジン(Thymeleaf など)で HTML に埋め込んだり、
API なら JSON に変換して返したりします。

HTML を返す場合は、ブラウザがそれを画面に描画します。
JSON を返す場合は、フロントエンド(JavaScript)がそれを受け取って画面を更新します。


REST と Web アプリの関係

REST は「Web API の設計スタイル」

REST(レスト)は、
「URL と HTTP メソッドを使って、リソース(ユーザー、商品、注文など)を操作する設計スタイル」です。

例えば、ユーザーを扱う REST API なら、こんな感じになります。

GET /users でユーザー一覧を取得
GET /users/1 で ID=1 のユーザーを取得
POST /users でユーザーを新規作成
PUT /users/1 でユーザーを更新
DELETE /users/1 でユーザーを削除

Java では、Spring Boot などを使うと、次のように書けます。

@RestController
@RequestMapping("/users")
class UserController {

    @GetMapping
    List<User> list() { ... }

    @GetMapping("/{id}")
    User get(@PathVariable Long id) { ... }

    @PostMapping
    User create(@RequestBody UserRequest request) { ... }
}
Java

REST は「Web アプリの中で、サーバー側の機能を外部に公開するための API の設計ルール」として使われます。


Web アプリの「役割分担」をイメージする

クライアントとサーバーの責務

クライアント(ブラウザやスマホアプリ)は、
画面表示、ユーザー入力、簡単なバリデーションなどを担当します。

サーバー(Java Web アプリ)は、
ビジネスロジック、データベースとのやり取り、認証・認可、トランザクション管理などを担当します。

この「どっちが何をやるか」の線引きが、設計の重要ポイントになります。
最近は、画面はフロントエンド(React/Vue など)、サーバーは REST API という分担もよくありますが、
根っこにあるのは「HTTP でリクエストとレスポンスをやり取りする」という同じ仕組みです。


初心者がまず押さえるべき Web アプリのイメージ

ここまでを、あなたの言葉でまとめるとこうなります。

ブラウザが HTTP リクエストを送り、サーバーが HTTP レスポンスを返す。
Java Web アプリは、そのサーバー側の中身で、
「どの URL に来たらどの処理をするか」を決め、
データベースからデータを取り、
HTML や JSON を組み立てて返している。

REST は、そのサーバー側の機能を「URL+HTTP メソッド」で整理して公開する設計スタイル。
Web アプリの仕組みは、
クライアントとサーバーが HTTP という共通ルールで会話している、というシンプルな構図の上に成り立っている。

タイトルとURLをコピーしました