Spring Bootは、Java製の人気フレームワークSpring Frameworkを活用して、Java企業システムを開発するためのプロジェクトです。Spring Bootでは、よくAPIコールを実装する必要があります。そこで、本文では、Spring BootでGET・POST送信を実装する方法を皆さんに紹介します。
Spring Bootとは?
Spring Bootは、Java製の人気フレームワークSpring Frameworkを活用して、Java企業システムを開発するためのプロジェクトです。Spring BootはSpringアプリケーションの立ち上げを簡単にすることを目的としており、次のような特徴があります。
設定の簡素化
- XMLベースの設定の代わりにJavaベースの設定が可能
- 外部設定(プロパティファイルなど)を容易に取り込める
組み込み型Webサーバーの統合
- TomcatやJettyなどのWebサーバーが組み込まれており、Warファイル展開が不要
スターターの提供
- 依存ライブラリ群を自動で設定してくれる"スターター"が用意されている
開発支援ツール
- 変更の自動リロード、HTTPリクエスト監視ツールなどの開発を支援する機能が付属
メトリクスやヘルスチェック機能
- アプリケーションのメトリクスを取得したり、ヘルスチェック用のエンドポイントが自動で提供される
このように、Spring Bootを使うと煩雑な設定作業が不要となり、Java Webアプリケーションの開発効率が大幅に向上します。Spring BootはSpring実務で非常に幅広く利用されています。

Spring BootでGET・POSTなどのAPIコールが必要なのはなぜ?
Spring BootでAPIコールを実装するのが必要となる場合はよくあります。その中で、特にGETやPOST送信が多く見られます。必要な理由といえば、Webアプリケーションがリクエスト/レスポンスモデルに基づいて動作するためです。HTTPプロトコルは、クライアント(ブラウザなど)からサーバーにリクエストを送信し、サーバーはそのリクエストに対するレスポンスを返すという通信モデルになっています。
- GETリクエストは、サーバーからリソース(HTMLページ、画像、データなど)を取得するために使用されます。
- POSTリクエストは、クライアントからサーバーにデータを送信するために使用されます(フォーム送信、データ更新など)。
例えば、ブラウザからWebページにアクセスするとGETリクエストが発生し、サーバーがHTMLを返します。そのページにフォームがあり、フォームを送信するとPOSTリクエストが発生します。
Spring Bootは一般的なWebアプリケーションフレームワークですので、HTTPプロトコルに基づいたリクエスト/レスポンスモデルに沿って動作します。Spring BootのControllerでは、特定のURLに対するGET/POSTリクエストを処理するメソッドを定義する必要があります。
したがって、Spring Bootを使ってWebアプリケーションを構築する際には、HTTPリクエストの種類に応じてGETやPOSTのリクエストを処理する必要があるのです。
Spring BootでGETやPOSTリクエストを実装
それでは、Spring BootでGETやPOSTリクエストを実装するには、どうしたらいいですか?次は、Spring BootでGETやPOSTリクエストを実装する操作手順を皆さんに紹介していこうと思います。
Spring BootでGETやPOSTのリクエストを処理するには、次のようにControllerクラスを作成する必要があります:
@RestController
アノテーションを付けたクラスを作成します。
@RestController
public class MyController {
//...
}
- GETリクエストを処理するメソッドには
@GetMapping
アノテーションを付けます。
@GetMapping("/hello")
public String hello() {
return "Hello, World!";
}
このメソッドは/hello
というURLに対するGETリクエストを処理し、"Hello, World!"という文字列を返します。
- POSTリクエストを処理するメソッドには
@PostMapping
アノテーションを付けます。
@PostMapping("/register")
public String register(@RequestBody User user) {
// ユーザー登録処理
return "User registered: " + user.getName();
}
このメソッドは/register
というURLに対するPOSTリクエストを処理します。@RequestBody
アノテーションによりリクエストボディからUserオブジェクトを受け取れます。
- リクエストパラメータを受け取る場合は
@RequestParam
アノテーションを使用します。
@GetMapping("/search")
public List<Product> searchProducts(@RequestParam String q) {
// 商品検索処理
return productService.searchByName(q);
}
このメソッドは/search?q=検索ワード
のようなGETリクエストを処理します。q
パラメータの値を受け取ります。
- パスパラメータを受け取る場合は
@PathVariable
アノテーションを使用します。
@GetMapping("/products/{id}")
public Product getProduct(@PathVariable Long id) {
return productService.getById(id);
}
このメソッドは/products/123
のようなURLに対するGETリクエストを処理します。{id}
部分からidの値を取得します。
このようにSpring BootのControllerでは、適切なアノテーションを付けてメソッドを定義することで、GETやPOSTなどのHTTPリクエストを処理できます。
Spring BootでGETやPOST送信の実装コード
上記の内容から、Spring BootでGETやPOST送信を実行する方法を理解した上、この部分ではSpring Bootでの典型的なWebアプリケーションの構成を示すサンプルコードを紹介します。
Spring BootでGETやPOSTリクエストを実装するには、基本的には次のようなサンプルコードを利用することができると思います。
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
// Spring Bootアプリケーションのエントリポイント
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
// import org.springframework.web.bind.annotation.*;一般的には次のようなものをインポートする必要あり
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
// RESTコントローラー
@RestController
@RequestMapping("/api/products")
public class ProductController {
// サービスクラスをDIする
private final ProductService productService;
public ProductController(ProductService productService) {
this.productService = productService;
}
// GETリクエストでリソースを取得
@GetMapping
public List<Product> getProducts() {
return productService.getAllProducts();
}
// GETリクエストでパスパラメータから特定のリソースを取得
@GetMapping("/{id}")
public Product getProduct(@PathVariable Long id) {
return productService.getProduct(id);
}
// POSTリクエストでデータを作成
@PostMapping
public Product createProduct(@RequestBody Product product) {
return productService.createProduct(product);
}
// PUTリクエストでデータを更新
@PutMapping("/{id}")
public Product updateProduct(@PathVariable Long id, @RequestBody Product product) {
return productService.updateProduct(id, product);
}
// DELETEリクエストでデータを削除
@DeleteMapping("/{id}")
public void deleteProduct(@PathVariable Long id) {
productService.deleteProduct(id);
}
}
// リソースを表すエンティティクラス
class Product {
private Long id;
private String name;
private BigDecimal price;
// getter/setterメソッドは省略
}
// サービスインターフェース
interface ProductService {
List<Product> getAllProducts();
Product getProduct(Long id);
Product createProduct(Product product);
Product updateProduct(Long id, Product product);
void deleteProduct(Long id);
}
// サービスの実装クラス
@Service
class ProductServiceImpl implements ProductService {
//データアクセスロジックは省略
}
上記のサンプルコードの解説
このサンプルでは、Application
クラスが SpringBootApplication
を実行するエントリポイントです。ProductController
は@RestController
アノテーションで示されるRESTコントローラーで、HTTP メソッドごとにメソッドをマッピングしています。
@GetMapping
でGETリクエストを処理@PostMapping
でPOSTリクエストを処理@PutMapping
でPUTリクエストを処理@DeleteMapping
でDELETEリクエストを処理
@PathVariable
でパスパラメータを、@RequestBody
でリクエストボディを受け取っています。
Product
クラスはリソースを表すエンティティです。
ProductService
はビジネスロジックを実装するインターフェースで、ProductServiceImpl
がその実装クラスです。
実際のアプリケーションでは、データアクセス層、セキュリティ設定、その他の必要な設定などを含める必要がありますが、これがSpring BootのWebアプリケーションの基本的な構造になります。
Apidogでより便利にAPIをテストして管理
Webアプリの開発中に、APIを開発したり、テストしたりする必要がよくあります。1つのアプリでは数多くのAPIが利用されているので、これらのAPIを便利に管理する必要があります。このような場合、Apidogという便利なAPI管理ツールを利用することで、APIを直感的なインターフェースで簡単にテストすることができます。そして、APIリクエストの情報を保存してより便利に管理したり、APIドキュメンテーションを生成したりすることもできますので、APIのテストと集中管理が便利に行えるのでしょう。
次の画像のように、Apidogでは、簡単にHTTPメソッドを指定して、GETやPOSTリクエストなどを送信することができます。

また、Apidogを使ってHTTPリクエストを送信した後、そのリクエストをAPI仕様書として保存することができます。そして、必要に応じて、保存したHTTPリクエストからドキュメンテーションを簡単な1クリックだけで生成することもできますので、非常に便利にAPIを管理できます。
Apidogによって生成されたドキュメンテーションの例:

まとめ
Spring BootはJavaのWebアプリケーションフレームワークで、XMLベースの設定ではなくJavaベースの設定が可能など、開発の効率化に役立つ特徴があります。本記事では、Spring Bootで一般的に必要となるGET/POSTリクエストの実装方法について解説しました。具体的には、@RestController
で制御クラスを作成し、@GetMapping
、@PostMapping
などのアノテーションでリクエストマッピングを定義します。リクエストパラメータは@RequestParam
、パスパラメータは@PathVariable
で受け取ります。
また、APIの開発中は、APIをテストし、仕様書の自動生成などの管理を効率化するために、Apidogという便利なAPI管理ツールを活用することがおすすめです。
ということで、Spring BootでのGET/POSTリクエスト処理の基本を理解することで、より本格的なWebアプリケーション開発が可能になります。APIの効率的な開発・管理には、ApiDogなどのツールを活用するとよいでしょう。