Spring Bootのルーティング完全ガイド!初心者でもわかるHTTPリクエストの処理方法

こんにちは。ゆうせいです。
Spring Bootは、JavaでWebアプリケーションを開発する際にとても便利なフレームワークです。特に、ルーティング(Routing)を簡単に設定できるのが魅力の一つです。
今回は、Spring Bootのルーティングの仕組みや使い方を詳しく解説します!


1. ルーティングとは?

ルーティングとは、クライアント(ブラウザやアプリなど)からのHTTPリクエストを、適切な処理に振り分ける仕組みのことです。

例えば、次のような動作を考えてみましょう。

  • http://example.com/products にアクセス → 商品一覧を表示
  • http://example.com/products/1 にアクセス → 商品ID「1」の詳細を表示
  • http://example.com/cart にアクセス → ショッピングカートを表示

このように、URLごとに処理を分岐させるのがルーティングの役割です。


2. Spring Bootのルーティングの基本

Spring Bootでは、@RestController@RequestMapping アノテーションを使ってルーティングを定義します。

基本的なルーティング

まずは、簡単なルーティングの例を見てみましょう。

@RestController
@RequestMapping("/hello")
public class HelloController {

    @GetMapping
    public String sayHello() {
        return "Hello, Spring Boot!";
    }
}

このコードの意味は次の通りです:

  1. @RestController:このクラスがREST APIのコントローラーであることを示す。
  2. @RequestMapping("/hello"):このクラス内のエンドポイントが /hello から始まることを指定。
  3. @GetMappingGET /hello にリクエストが来たら、"Hello, Spring Boot!" を返す。

この状態でSpring Bootアプリを起動し、ブラウザやPostmanで http://localhost:8080/hello にアクセスすると、「Hello, Spring Boot!」が表示されます。


3. HTTPメソッドごとのルーティング

Spring Bootでは、以下のように異なるHTTPメソッドに対応するアノテーションが用意されています。

HTTPメソッドアノテーション役割
GET@GetMappingデータを取得
POST@PostMappingデータを作成
PUT@PutMappingデータを更新
DELETE@DeleteMappingデータを削除

例えば、以下のようなコードを書けば、各メソッドごとに適切な処理を作ることができます。

@RestController
@RequestMapping("/products")
public class ProductController {

    // 商品一覧を取得
    @GetMapping
    public String getAllProducts() {
        return "商品一覧";
    }

    // 商品を追加
    @PostMapping
    public String addProduct() {
        return "商品を追加しました";
    }

    // 商品を更新
    @PutMapping("/{id}")
    public String updateProduct(@PathVariable int id) {
        return "商品ID " + id + " を更新しました";
    }

    // 商品を削除
    @DeleteMapping("/{id}")
    public String deleteProduct(@PathVariable int id) {
        return "商品ID " + id + " を削除しました";
    }
}


4. URLパラメータの受け取り

ルーティングでは、URL内のパラメータを受け取ることができます。

パス変数(@PathVariable)

例えば、特定の商品IDを取得するエンドポイントを作りたい場合は、@PathVariable を使います。

@GetMapping("/{id}")
public String getProduct(@PathVariable int id) {
    return "商品ID: " + id;
}

動作例

  • GET /products/1"商品ID: 1"
  • GET /products/10"商品ID: 10"

クエリパラメータ(@RequestParam)

URLの末尾に ?key=value の形でパラメータを渡す場合は、@RequestParam を使います。

@GetMapping("/search")
public String searchProduct(@RequestParam String name) {
    return "検索結果: " + name;
}

動作例

  • GET /products/search?name=コーヒー"検索結果: コーヒー"
  • GET /products/search?name=スマホ"検索結果: スマホ"

5. JSONデータの受け取り

POSTリクエストでJSONデータを受け取る場合は、@RequestBody を使います。

@PostMapping
public String createProduct(@RequestBody Product product) {
    return "商品 " + product.getName() + " を追加しました";
}

リクエストの例

{
  "name": "ノートPC",
  "price": 100000
}


6. まとめ

Spring Bootのルーティングを学ぶことで、WebアプリやAPIの開発がスムーズに進みます。
今回は基本的なルーティングの仕組みを解説しましたが、実際の開発では次のようなことも学んでおくと良いでしょう。

  • CORSの設定:異なるドメインからのアクセスを許可する方法
  • 例外処理:エラーハンドリングの仕組み
  • リクエストのバリデーション:送信データのチェック

次のステップとして、Spring Bootとデータベースを連携させたAPIの開発にも挑戦してみてください!

セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク

春のロゴ アイコン by Icons8

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。