カテゴリ: SpringのAPI開発(REST & GraphQL) 更新日: 2025/12/05

Spring BootでREST APIを作る(基本)初心者向けの作り方をやさしく解説!

Spring BootでREST APIを作る(基本)
Spring BootでREST APIを作る(基本)

新人と先輩の会話形式で理解しよう

新人

「先輩、最近よく聞くREST APIって何なんですか?Spring Bootで簡単に作れるって聞いたんですけど…」

先輩

「いい質問だね。REST APIは、Webシステムやアプリ同士がデータをやり取りするための仕組みなんだ。Spring Bootは、そのREST APIを効率よく作るために便利なフレームワークだよ。」

新人

「JavaでWebページは作ったことあるけど、APIって画面がないからイメージしづらいです…」

先輩

「確かに最初はそう感じるかもね。でも、Spring Bootを使えば初心者でもREST APIの作り方を理解しやすいよ。これから順を追って解説していこう!」

1. REST APIとは何か?(基本概念と仕組み)

1. REST APIとは何か?(基本概念と仕組み)
1. REST APIとは何か?(基本概念と仕組み)

REST API(レストエーピーアイ)とは、インターネット上でデータをやり取りするための設計ルールのことです。特にWebアプリケーション同士が「情報をください」「この情報を更新して」などとやりとりするために使われます。

RESTとは「Representational State Transfer(表現状態の転送)」の略で、HTTPという通信の仕組みを使って、リソース(データ)を操作します。たとえば、「ユーザー一覧を取得する」「商品を登録する」といった操作を行うのに適しています。

REST APIは、次のようなHTTPメソッドを使ってリクエストを送信します:

  • GET:データの取得
  • POST:新しいデータの作成
  • PUT:既存データの更新
  • DELETE:データの削除

これらの操作をURLに対して行うことで、画面を持たないシンプルな通信が可能になります。

たとえば、次のようなURLとメソッドの組み合わせが一般的です:

  • GET /users → ユーザー一覧の取得
  • POST /users → ユーザーの新規作成
  • PUT /users/1 → IDが1のユーザー情報の更新
  • DELETE /users/1 → IDが1のユーザーを削除

画面表示がないぶん、スマートフォンアプリやJavaScriptからの非同期通信にぴったりの設計です。

2. REST APIをSpring Bootで作る際の全体の流れ(初期理解)

2. REST APIをSpring Bootで作る際の全体の流れ(初期理解)
2. REST APIをSpring Bootで作る際の全体の流れ(初期理解)

それでは、実際にSpring BootでREST APIを作成する流れをざっくりと説明しましょう。

今回は、初心者の方が入りやすいように、次のような環境で開発します。

  • pleiades(プレアデス)でSpring Bootプロジェクトを作成
  • 依存関係は、チェックボックスでSpring Webのみ追加
  • ビルドツールはGradleを選択(Mavenは使用しない)
  • コントローラは@Controllerを使って実装
  • @RestControllerは使わない
  • Bootstrapなどの外部ライブラリは使わない

基本的な開発のステップは以下の通りです:

  1. Spring Bootプロジェクトの作成(pleiadesから)
  2. Controllerクラスの作成
  3. URLとメソッドのマッピング
  4. レスポンスをViewではなく、文字列として返すように設計
  5. ブラウザやPostmanなどで動作確認

まず、pleiadesのメニューから「ファイル > 新規 > Spring Starterプロジェクト」を選択します。次に、使用する依存関係として「Spring Web」にチェックを入れてください。

作成したプロジェクトに、次のような@Controllerクラスを追加します。


package com.example.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class HelloController {

    @GetMapping("/hello")
    @ResponseBody
    public String hello() {
        return "こんにちは、Spring BootのREST APIへようこそ!";
    }
}

@Controller@ResponseBodyを組み合わせることで、HTMLではなく文字列をそのままレスポンスとして返すことができます。

ここで@RestControllerを使えばもっとシンプルに書けますが、今回は@Controllerのみを使用するという前提のため、あえてこの方法を選んでいます。

上記のコードを記述してSpring Bootアプリケーションを起動すると、ブラウザで「http://localhost:8080/hello」にアクセスすることで、次のような文字列が表示されます。


こんにちは、Spring BootのREST APIへようこそ!

このように、画面を使わずに文字列を返すことで、APIとしてのレスポンスを確認することができます。

今後はこの仕組みを拡張して、ユーザー情報や商品データなどを扱うREST APIを作成できるようになっていきます。

3. REST APIの基本的な作り方(プロジェクト作成〜Controller作成)

3. REST APIの基本的な作り方(プロジェクト作成〜Controller作成)
3. REST APIの基本的な作り方(プロジェクト作成〜Controller作成)

Spring BootでREST APIを作成するには、まずプロジェクトの土台となる環境を用意する必要があります。ここでは初心者向けに、pleiades(プレアデス)を使ったプロジェクトの作成手順から説明します。

まずはpleiadesを起動し、「ファイル > 新規 > Springスタータープロジェクト」を選択してください。

表示されるウィザードで、以下のように設定します:

  • 名前:任意(例:rest-api-demo)
  • Group:com.example
  • Artifact:demo
  • Type:Gradle Project(MavenではなくGradleを選択)
  • Java Version:Java 17など任意
  • Dependencies(依存関係):「Spring Web」にチェックを入れる

依存関係は、Spring Webだけで構いません。他の技術(JPAやSecurityなど)は今回は使いません。

プロジェクトを作成すると、Spring Bootが自動的に初期構成された状態になります。この状態で、すぐにコントローラクラスを作ってREST APIのエンドポイントを実装できます。

4. コントローラクラスの実装方法(@Controllerを使ったGETメソッドの書き方)

4. コントローラクラスの実装方法(@Controllerを使ったGETメソッドの書き方)
4. コントローラクラスの実装方法(@Controllerを使ったGETメソッドの書き方)

Spring BootでREST APIの入り口となるのがController(コントローラ)クラスです。コントローラは、URLとメソッド(GETやPOST)を紐づけることで、APIの処理を定義します。

今回は@Controllerを使い、@RestControllerは使わない前提です。そのため、レスポンスとして文字列を返すには@ResponseBodyを組み合わせて記述します。

以下は、簡単なGETメソッドを実装した例です。


package com.example.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class SampleController {

    @GetMapping("/api/message")
    @ResponseBody
    public String message() {
        return "これはSpring Bootで作成したサンプルAPIです。";
    }
}

@GetMapping("/api/message")は、「/api/message」というURLにGETリクエストが来たときに、message()メソッドを実行するよう指定しています。

@ResponseBodyを使うことで、HTMLテンプレートを返すのではなく、文字列(JSONなども対応可能)をそのままレスポンスとして返します。

このControllerクラスを作成したら、Spring Bootアプリケーションを実行し、http://localhost:8080/api/messageにアクセスすることで、次のようなメッセージが表示されます。


これはSpring Bootで作成したサンプルAPIです。

このように、画面のないAPIでもURLにアクセスすることで処理の確認が可能です。今後はここにロジックを追加したり、データベースと連携したりすることで、より実践的なREST API開発へと進化させていきます。

5. application.properties の基本設定

5. application.properties の基本設定
5. application.properties の基本設定

Spring Bootでは、アプリケーションの設定をまとめるファイルとしてapplication.propertiesがあります。このファイルに設定を書き加えることで、ポート番号や文字コードなど、さまざまな動作を変更できます。

たとえば、標準ではWebアプリケーションのポートは8080ですが、これを変更したい場合は以下のように記述します。


server.port=9090

上記の設定により、http://localhost:9090でアプリが動作するようになります。

次に、APIレスポンスで文字化けを防ぐために、UTF-8での出力を指定する設定も紹介します。


spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true

この設定を追加しておくと、日本語のメッセージが正しく表示されるようになります。

また、Spring BootではThymeleafやFreemarkerのテンプレートを使わずにREST APIを作成することが多いため、Viewの設定やテンプレートエンジンの設定は不要です。

初心者がつまずきやすいポイントとして、「エラーが出るのに原因がわからない」という問題があります。その際は、このapplication.propertiesの設定ミスが影響していることもありますので、丁寧に設定内容を確認するようにしましょう。

なお、プロパティファイルはプロジェクト内の以下の場所にあります:


src/main/resources/application.properties

このファイルに必要な設定を順に追加していけば、Spring BootのREST APIを安定して運用できるようになります。

6. パスやURLマッピングの基本(@RequestMapping/@GetMappingなど)

6. パスやURLマッピングの基本(@RequestMapping/@GetMappingなど)
6. パスやURLマッピングの基本(@RequestMapping/@GetMappingなど)

Spring BootでREST APIを開発する際には、URLと処理を結びつけるマッピングがとても重要です。これは、どのURLにアクセスしたら、どのメソッドを実行するかを決める仕組みです。

初心者が最初につまずきやすいのが、@GetMapping@RequestMappingといったアノテーションの使い方です。

@GetMappingは、特定のURLに対して「GET」リクエストが来たときに処理を行うためのものです。一方、@RequestMappingは、GETやPOSTなど複数のリクエスト方法に対応できます。

例として、次のようなコードを見てみましょう。


@Controller
public class PathController {

    @GetMapping("/api/info")
    @ResponseBody
    public String getInfo() {
        return "GETメソッドで取得した情報です";
    }

    @RequestMapping("/api/common")
    @ResponseBody
    public String getCommon() {
        return "このメソッドはGETでもPOSTでもアクセス可能です";
    }
}

@GetMapping("/api/info")は、http://localhost:8080/api/infoにアクセスしたときだけ動作します。一方、@RequestMapping("/api/common")は、リクエストの種類に関係なく呼び出されます。

ただし、@RequestMappingを使う場合は、必要に応じてmethod属性を指定するのが安全です。明示的にmethod = RequestMethod.GETと書くことで、意図しない動作を防ぐことができます。

7. ブラウザで確認する方法と簡単なデバッグ方法

7. ブラウザで確認する方法と簡単なデバッグ方法
7. ブラウザで確認する方法と簡単なデバッグ方法

作成したREST APIが正しく動いているかを確認するには、ブラウザでURLにアクセスするのが最も簡単です。たとえば、@GetMapping("/api/hello")と書いた場合は、http://localhost:8080/api/helloにアクセスするだけでOKです。

文字列がブラウザにそのまま表示されれば、Spring BootのREST APIが正しく動いている証拠です。

さらにもう一歩踏み込んで確認したい場合は、次のような方法があります:

  • ブラウザの開発者ツール(F12キー)を使い、ネットワークタブでリクエストとレスポンスを確認する
  • pleiadesのコンソール出力で、どのURLが呼び出されたかやエラーが出ていないかを確認する

これだけでも十分にデバッグできますが、もっと細かく確認したい場合は、ログにメッセージを出力しても良いでしょう。

たとえば、次のようにSystem.out.println()を使う方法があります。


@GetMapping("/api/test")
@ResponseBody
public String test() {
    System.out.println("テストメソッドが呼ばれました");
    return "テスト成功";
}

このようにして、初心者でも目に見える形で動作確認ができるので安心です。画面のないAPI開発でも、URLと文字列のレスポンスだけでしっかりと確認ができるのがREST APIの良いところです。

8. REST API開発のよくある失敗例とその対策(@RestControllerではない点の注意含む)

8. REST API開発のよくある失敗例とその対策(@RestControllerではない点の注意含む)
8. REST API開発のよくある失敗例とその対策(@RestControllerではない点の注意含む)

Spring BootでREST APIを開発する際、初心者がよくつまずくポイントがいくつかあります。ここでは、実際によくある失敗例と、その対処法を解説します。

① @Controllerを使っているのに画面が表示されない

REST APIでは、画面を表示するのではなく文字列やデータを返すことが目的です。しかし、@Controllerを使っていても、@ResponseBodyを忘れてしまうと、「テンプレートファイルが見つからない」というエラーが出ることがあります。

これは、Springが「HTML画面を返すもの」と誤解してテンプレートエンジンを探してしまうためです。

対策:必ず@ResponseBodyをつけるようにしましょう。


@Controller
public class MyController {

    @GetMapping("/api/check")
    public String noBody() {
        return "これは失敗例です"; // → エラーになる可能性大
    }
}

上記はテンプレートを探してしまうため、文字列として返したい場合は以下のように修正が必要です。


@GetMapping("/api/check")
@ResponseBody
public String correct() {
    return "正しいレスポンスです";
}

② @RestControllerを使えば動いたけど…

調べていると「@RestControllerを使えば簡単」と紹介されていることがあります。たしかにそのとおりで、@ResponseBodyを明示しなくても動作します。

ですが、この記事では@Controllerのみを使う前提です。そのため、他サイトの情報をうのみにせず、@Controller + @ResponseBodyという組み合わせを正しく理解しておくことが大切です。

③ URLが間違っている

意外に多いのが、URLを入力する際のミスです。@GetMapping("/api/sample")と定義したのに、http://localhost:8080/sampleと入力してしまうパターンです。

対策:URLのパスは@GetMappingで指定した文字列と完全一致でないと反応しません。api/を忘れたり、/が抜けていたりするとアクセスできないので注意しましょう。

④ POSTやPUTで確認しようとしてしまう

ブラウザは基本的に「GETリクエスト」しか送れません。つまり、@PostMapping@PutMappingの確認はブラウザではできないのです。

対策:GETメソッドだけでなく、POSTやPUTを確認したい場合は「Postman」などのツールを使いましょう。初心者でもボタン操作でリクエストを送れるのでおすすめです。

⑤ 文字化けしてしまう

APIで日本語を返そうとしたときに、文字化けが起きることがあります。これはapplication.propertiesで文字コードの設定がされていない場合によく起こります。

対策:前の章で紹介したように、UTF-8を指定しておくことで回避できます。


spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true

これらの対策を押さえておくだけで、Spring BootのREST API開発をスムーズに進めることができます。特に初心者の方は、ひとつずつ動作を確認しながら開発する姿勢が大切です。

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

REST APIとは何のことですか?Spring Boot初心者でも理解できますか?

REST APIとは、Webアプリケーション同士がデータをやり取りするための設計ルールのことです。Spring Bootを使えば、プログラミング初心者でもREST APIの仕組みを簡単に理解して実装できます。
コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

カテゴリの一覧へ
新着記事
New1
Thymeleaf
Thymeleaf 変数の定義方法をわかりやすく解説|初心者向けテンプレート入門
New2
Thymeleaf
Thymeleaf th:attrで属性をまとめて設定する方法を初心者向けに解説
New3
Thymeleaf
ThymeleafとJavaScriptのonclickで引数を渡す方法を完全解説!初心者でもわかる値の受け渡し
New4
Thymeleaf
Thymeleaf javascript inlineの書き方と使い方を完全ガイド!初心者でもわかるテンプレートエンジンとJavaScript連携
人気記事
No.1
Java&Spring記事人気No1
Thymeleaf
Thymeleaf とは?初心者向けにThymeleafの基本を徹底解説
No.2
Java&Spring記事人気No2
SpringのDB操作
JPAの標準クエリメソッド(findById, findAll)を完全解説!初心者でもわかるデータ取得の基本
No.3
Java&Spring記事人気No3
SpringのWeb開発(Spring MVC)
Spring MVC入門(概要とアーキテクチャ)
No.4
Java&Spring記事人気No4
SpringのAPI開発(REST & GraphQL)
REST APIの主要なHTTPメソッド(GET, POST, PUT, DELETE)を初心者向けにわかりやすく解説!
No.5
Java&Spring記事人気No5
SpringのDB操作
findByXxx, existsByXxx の基本(JPA)を完全解説!初心者でもわかるクエリメソッドの使い方
No.6
Java&Spring記事人気No6
Spring認証(Spring Security)
セッション管理の基本(@SessionAttributes)を完全解説!初心者でもわかるセッションの仕組み
No.7
Java&Spring記事人気No7
Thymeleaf
Thymeleaf if elseの書き方と条件分岐の活用法!初心者でもわかる使いこなしガイド
No.8
Java&Spring記事人気No8
SpringのWeb開発(Spring MVC)
Spring Bootでの@GetMappingと@PostMappingの基本を完全解説!初心者でも理解できる使い方