Apidog

オールインワンのAPI開発プラットフォーム

API設計

API仕様書生成

API設計

API Mock

APIテスト自動化

無料登録
Home / 操作ガイド / ガイド:Spring BootでGET・POST送信の実装

ガイド:Spring BootでGET・POST送信の実装

Spring Bootは、Java製の人気フレームワークSpring Frameworkを活用して、Java企業システムを開発するためのプロジェクトです。Spring Bootでは、よくAPIコールを実装する必要があります。そこで、本文では、Spring BootでGET・POST送信を実装する方法を皆さんに紹介します。

Spring Bootは、Java製の人気フレームワークSpring Frameworkを活用して、Java企業システムを開発するためのプロジェクトです。Spring Bootでは、よくAPIコールを実装する必要があります。そこで、本文では、Spring BootでGET・POST送信を実装する方法を皆さんに紹介します。

💡
APIの開発中は、APIをテストし、仕様書の自動生成などの管理を効率化するために、Apidogという便利なAPI管理ツールを活用することがおすすめです。
button

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の公式サイト

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のテストと集中管理が便利に行えるのでしょう。

button

次の画像のように、Apidogでは、簡単にHTTPメソッドを指定して、GETやPOSTリクエストなどを送信することができます。

Apidogでリクエストを送信

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

Apidogによって生成されたドキュメンテーションの例:

ApidogのAPI仕様書のサンプル
button

まとめ

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などのツールを活用するとよいでしょう。

Apidogのニュースレターを購読する

今すぐ購読すると、いつでもApidogから更新情報と最新観点を手に入れることができます。