JavaとSpring BootでREST APIを作成する方法

November 30, 2021
執筆者
Nida Khan
寄稿者
Twilio の寄稿者によって表明された意見は彼ら自身のものです
レビュー担当者
Diane Phan
Twilion

JavaとSpring BootでREST APIを作成する方法

この記事はNida Khanこちらで公開した記事(英語)を日本語化したものです。

もうずいぶん前からTwilioのREST APIを使用していますが、HTTPでクライアントとサーバー間の通信を確立する際にREST APIがどのように使用されているかを見るといつも驚きます。APIを呼び出すと、サーバーが呼び出されます。次に、サーバーがビジネスロジック全体を実行し、結果を返します。

自分でAPIを作成できるように、これらのAPIがどのように開発されているかを常に知りたいと思っていました。これが分かれば、Spring Bootなどのさまざまなフレームワークを探求できます。そこで、Spring Bootを使用してREST APIを開発し、初心者がSpring Bootを使い始めるのに役立つこのチュートリアルを作成することにしました。

このチュートリアルでは、Spring BootでREST APIを開発し、従業員データベースでCRUD操作を実行する方法をご紹介します。

必要条件

  • Javaに関する予備知識または学習意欲。
  • Java Development Kit(JDK)バージョン8以降。
  • Maven 3.3以降
  • MySQL。MySQLで従業員データを保存し、REST APIでアプリケーションにアクセスします。MySQLの設定をWorkbenchで行う手順については、ガイドに従ってください。
  • コード開発用のEclipse IDE。インストーラを実行すると、インストールする具体的なパッケージが求められるため、[Eclipse IDE for JavaEEDevelopers](JavaEEDevelopers用Eclipse IDE)を選択します。Mavenは必ずEclipse IDEで設定してください。
  • APIをテストするためのPostmanデスクトップアプリケーション。インストール中に、プロンプトが表示されたら無料のアカウントを作成します。

Spring Bootを使用する利点

Spring Bootは、Spring上に構築されたJavaフレームワークであり、Webアプリケーションの開発に使用されます。最小限の構成でREST APIを作成できます。REST APIにSpring Bootを使用する利点は次のとおりです。

  • 複雑なXML設定が必要ないこと。
  • Spring Bootアプリケーションを実行するためのTomcatサーバーが埋め込まれていること。
  • 特定の依存関係に対してアプリケーションを自動的に設定するSpring Bootによる自動設定機能があること。クラスパスで依存関係が使用可能な場合、その依存関係のBeanがSpring Bootで自動作成されます。SpringのBeanは、Spring IoCコンテナを介してSpringでインスタンス化と管理を実施するオブジェクトです。これはSpring Bootが自動的に処理するため、Beanを作成して設定する必要はありません。

Spring Bootは、コーディングをすぐに開始するために必要なすべての設定をボイラープレートコードに提供するため、一般的に開発者がアプリケーションを構築するのに最適です。

Spring Bootプロジェクトを作成、インポートする

Spring Bootアプリケーションを作成するには、Spring Intializrというツールを使用します。このツールは、Spring Bootプロジェクトの基本構造を提供しているため、すぐにコーディングを開始できます。

Spring Initializrサイトに移動します。[Project](プロジェクト)で[Maven]を選択し、言語に[Java]を選択します。このチュートリアルでは、Spring Bootバージョン2.5.6を使用して作成しているため、Spring Initializrでは同じバージョンを選択してください。

プロジェクトの[Project Metadata](プロジェクトメタデータ)で、次の識別子を指定します。

  • Group(グループ):プロジェクトを作成している組織またはグループを示す基本パッケージ名です。Javaパッケージの命名規則に従います。デフォルト値のままでも構いません。
  • Artifact(アーティファクト):プロジェクトの名前。従業員の詳細にアクセスして操作するためのアプリケーションを作成しているため、[employee]を指定します。
  • Name(名前):プロジェクトのエントリポイントを作成するときにSpring Bootで使用するアプリケーションの表示名です。アーティファクト名([employee])と同じで構いません。
  • Description(説明) - プロジェクトに関する説明を指定します。

アプリケーションはSpringBootが提供する埋め込みTomcatサーバーで実行されるため、[Packaging](パッケージング)タイプとして[Jar]を選択します。

このチュートリアルはJava8で記述しているため、処理を進めるには、同じJavaバージョンを選択します。

次の依存関係をプロジェクトに追加します。

  • Spring Web: RESTful Webアプリケーションの構築に必要です。
  • Spring Data JPA: データベースのデータにアクセスするために必要です。JPA(Java Persistence API)は、JavaオブジェクトをデータベースエンティティにマップするJava仕様であり、ORM(オブジェクト関係マッピング)とも呼ばれます。Spring Data JPAは、JPAを抽象化したものであり、レコードの作成、削除、更新など、データベースのさまざまな操作のためのユーティリティメソッドを提供します。JDBCと同様、クエリの作成は不要です。
  • MySQL Driver: MySQLデータベースに接続するために必要です。

Spring Bootアプリケーションは次の図のようになります。

spring initializr

画面の下部の[Generate](生成)ボタンをクリックします。プロジェクトのボイラープレートを含むzipファイルがダウンロードされます。zipファイルを任意のフォルダの場所に解凍します。

Eclipse IDEを開き、[File](ファイル)に移動して[Import](インポート)を選択します。[Maven]で、[Existing Maven Projects](既存のMavenプロジェクト)を選択します。[Next](次へ)をクリックします。

zipファイルを解凍したディレクトリを参照し、pom.xmlファイルが存在するルートフォルダを選択します。[Finish](完了)をクリックし、プロジェクトをEclipse IDEにインポートします。

ファイル構造

ファイルエクスプローラに次のフォルダが表示されます。

eclipse project explorer
  • src/main/java/com/example/employeeサブディレクトリは、チュートリアルのすべてのJavaクラスで構成されています。
  • リソースフォルダの下のapplication.propertiesファイルには、Spring Bootがアプリケーションの構成に使用するプロパティが含まれます。このファイルには、チュートリアルの後半で、データベースURL、ユーザー名、パスワードなどのデータベース構成の詳細を追加します。
  • pom.xmlには、Spring InitializrでSpring Bootプロジェクトを作成するときに追加したすべての依存関係が含まれます。

EmployeeApplication.javaという名前のファイルがあることに注意してください。これは、Spring Bootアプリケーションを起動するエントリポイントです。

@SpringBootApplicationには、次のSpring Bootアノテーションの機能が含まれます。

  • @EnableAutoConfiguration:  前述のSpring Bootの自動設定機能を有効にします。
  • @Configuration: アプリケーションが使用しているすべてのBean定義を提供する設定クラスを指定します。Spring Bootでは、設定クラスで提供されるBean定義を使用し、実行時にインスタンス化します。
  • @ComponentScan:  Spring Bootがパッケージをスキャンして、ServiceControllerRepositoryなどのコンポーネントを探し、それらの各クラスのBeanを登録できるようにします。

サブパッケージをプロジェクトに追加する

Spring Bootアプリケーションを構成する主なレイヤーについて理解します。プロジェクト内のレイヤーごとにサブパッケージを作成します。

  • DAO:  DAO(データアクセスレイヤー)は、データベースに接続し、データベースに保存されているデータにアクセスするためのインターフェースを提供します。単一のDAOクラスは、さまざまなタイプのエンティティを取得するクエリを処理できます。
  • リポジトリ: このレイヤーは、データベースに接続してデータにアクセスするDAOレイヤーに似ていますが、リポジトリレイヤーは、DAOレイヤーよりも優れた抽象化を提供します。すべてのクラスは、1つのエンティティにアクセスして操作します。このチュートリアルでは、リポジトリレイヤーを使用します。
  • サービス: このレイヤーは、DAOレイヤーを呼び出して、データを取得し、ビジネスロジックを実行します。サービスレイヤーのビジネスロジックは、受信したデータの計算の実行、一部のロジックに基づくデータのフィルタリングなどです。
  • モデル: モデルには、使用するデータベーステーブルにマップされるすべてのJavaオブジェクトが含まれます。DAOは、データベースからデータを取得し、それぞれのモデルにそのデータを入力して、サービスレイヤーに返します(その逆も同様)。
  • コントローラー: 最上位のレイヤーであり、特定のREST APIでリクエスト実行したときに呼び出されます。コントローラーは、REST APIリクエストを処理して、1件以上のサービスを呼び出し、HTTPレスポンスをクライアントに返します。

前述のコンポーネントの個別のフォルダを作成するには、Eclipseで、com.example.employeeパッケージを右クリックし、次に示すように、[New](新規作成)、[Package](パッケージ)の順に選択します。

新しいポップアップが開いたら、[Name](名前)フィールドに「com.example.employee.repository」と入力して[Finish](完了)をクリックします。

new package details

これにより、リポジトリコンポーネント用のフォルダが作成されます。前述の手順を、次のパッケージに対して繰り返します。

  • com.example.employee.controller
  • com.example.employee.model
  • com.example.employee.service

これらの各サブパッケージでアプリケーションのコードを作成する前に、テーブルを作成し、Spring BootでMySQL接続の詳細を設定します。

テーブルを作成してSpring BootでMySQLの詳細を設定する

MySQL Workbenchを開きます。ホームページで、[MySQL Connections](MySQL接続)の横の[+]アイコンをクリックします。

add new connection

Setup New Connection](新しい接続の設定)ポップアップが開きます。接続名として「spring-boot-test」と入力します。[Default Schema](デフォルトスキーマ)に「employee-schema」と入力します。

set up new connection

OK]をクリックします。新しいMySQL接続がホームページに作成されます。

mysql workbench

接続を開くには、ホームページの[spring-boot-test]をクリックします。[employee-schema]で、[テーブル](Tables)を右クリックし、[Create Table](テーブルの作成)を選択します。

emp_idfirst_namelast_nameemail_idの4つの列を追加します。[emp_id]で、[Primary Key](主キー)を選択し、[Not Null](Nullでない)と[Auto Increment](自動インクリメント)チェックボックスを選択します。テーブルは次の図のようになります。

create table

Apply](適用)をクリックし、[Finish](完了)をクリックします。

アプリケーションでこのMySQLインスタンスを接続するには、データベースの詳細をSpringBootに提供する必要があります。application.propertiesファイルを開き、次の内容を追加します。

spring.datasource.url = jdbc:mysql://127.0.0.1:3306/employee-schema

spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5InnoDBDialect
  • 3306は、MySQLインスタンスが実行されているポート番号です。インスタンスが実行されているポート番号に変更します。
  • MySQL5InnoDBDialectは、使用されているデータベースをSpring Bootに通知するために使用する方言です。Spring Bootでは、これに基づいて、データベースのSQLクエリを生成します。

Spring Bootは、この情報を使用して、データベース接続を自動設定します。

テーブルの準備ができたら、アプリケーションのさまざまなレイヤーのコードを追加します。

モデルクラスを作成する

Eclipse IDEに戻り、新しいクラスを作成するオプションのcom.example.employee.modelパッケージを右クリックします。

クラスの詳細を含む新しいポップアップが表示されます。[Name](名前)フィールドに、「Employee」と入力します。[Finish](完了)をクリックします。

create new java class

次の内容をファイルに追加します。

package com.example.employee.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "employee")
public class Employee {
        
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Column(name="emp_id")
            private Long id;
        
        @Column(name="first_name")
        private String firstName;
        
        @Column(name="last_name")
        private String lastName;
        
        @Column(name="email_id")
        private String emailId;
}

ファイルのコードを詳しく見てみましょう。

  • @Entityアノテーションでは、このJavaクラスがデータベーステーブルにマップされるように指定します。
  • @Tableプロパティでは、nameを使用して、このクラスがマップされる特定のテーブルを指定します。
  • 各Javaインスタンス変数の@Columnでは、名前や長さなどの一連のプロパティを定義できます。nameプロパティは、このインスタンス変数がマップされるデータベーステーブルのフィールドの名前になります。
  • フィールドの@Idでは、このフィールドがテーブルの主キーであることをSpring Bootに通知します
  • @GeneratedValueでは、主キーの生成に使用する戦略を指定します。

続いて、以下に説明するように、4つの主キー生成戦略があります。

  • GenerationType.AUTO: Spring Bootで使用するデフォルトの戦略です。この戦略を使用すると、JPAプロバイダーでは、application.propertiesファイルで指定した言語に応じて、主キーを生成するための適切な戦略を決定します。
  • GenerationType.IDENTITY: この戦略では、データベースID列を使用して主キー戦略を決定します。たとえば、従業員テーブルの作成中に、データベースでemp_id列を自動インクリメントとして定義しました。この戦略を使用すると、1から開始して、テーブルに新しい行が挿入されるたびに増分し、一意の主キーが生成されます。
  • GenerationType.SEQUENCE: この戦略では、データベースシーケンスを使用して主キーを生成します。
  • GenerationType.TABLE: この戦略では、データベーステーブルを使用して主キーを生成します。

また、前述のインスタンス変数のセッターとゲッターを作成します。Eclipseでそれらを自動生成するには、Employee.javaファイルを右クリックし、[Source](ソース)を選択します。[Generate Getters and Setters](ゲッターとセッターの生成)を選択します。[Select All](すべて選択)をクリックし、[Generate](生成)ボタンをクリックします。

次のセクションでは、このモデルクラスを使用してデータベースから従業員の詳細にアクセスするリポジトリクラスを作成します。

リポジトリクラスを作成する

EmployeeRepositoryという名前のクラスをcom.example.employee.repositoryパッケージの下に作成し、コードを次の内容に置き換えます。

package com.example.employee.repository;
  
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
  
import com.example.employee.model.Employee;
  
@Repository
public interface EmployeeRepository extends JpaRepository<Employee, Long> {
  
}

@Repositoryは、クラスがCRUD操作を含むデータリポジトリであることを示します。CRUDは、データベースの4つの基本操作(Create(作成)、Read(読み取り)、Update(更新)、Delete(削除))を表す頭字語です。

EmployeeRepositoryJpaRepositoryを拡張します。JpaRepositoryに渡される2つのパラメータがあります。最初のパラメータは、このリポジトリで管理されるモデルクラスであり、2番目は主キーのデータ型です。

Spring Data JPAから提供されているJpaRepositoryインターフェイスでは、リポジトリクラスで従業員テーブルのレコードを取得、更新、削除できます。

このインターフェイスでは、データベースを操作するための save()findAll()delete()などのメソッドも定義します。これらのメソッドの実装は、SimpleJpaRepositoryと呼ばれるデフォルトの実装クラスで提供されます。これらのメソッドを呼び出す必要があるため、これらの操作のクエリを作成する手間を省くことができます。

次のセクションでは、JpaRepository実装メソッドを呼び出すサービスクラスを作成します。

サービスクラスを作成する

サービスコンポーネントにはビジネスロジックが含まれます。EmployeeServiceという名前のクラスをcom.example.employee.serviceパッケージの下に作成し、コードを次の内容に置き換えます。

package com.example.employee.service;
  
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
  
import com.example.employee.model.Employee;
import com.example.employee.repository.EmployeeRepository;
import java.util.List;
  
@Service
public class EmployeeService {
  
        @Autowired
            EmployeeRepository empRepository;        
}

Springでは、クラスオブジェクトをインスタンス化するために@Autowiredアノテーションを使用します。

EmployeeRepositoryクラスの@Repositoryアノテーションでは、Springの@ComponentScan機能を使用して、このクラスのBeanを作成できるようにしていました。このBeanは、@Autowiredアノテーションを使用してサービスクラスで使用されます。これは、Springでの依存関係の注入と呼ばれます。

次に、サービスレイヤーにメソッドを作成します。これらの各メソッドは、EmployeeRepositoryで拡張されるJpaRepositoryメソッドを呼び出します。

これらのメソッドをEmployeeRepository empRepositoryの後のEmployeeServiceクラスに追加します。

// CREATE 
public Employee createEmployee(Employee emp) {
    return empRepository.save(emp);
}
  
// READ
public List<Employee> getEmployees() {
    return empRepository.findAll();
}
  
// DELETE
public void deleteEmployee(Long empId) {
    empRepository.deleteById(empId);
}
  • createEmployeeメソッドはempRepository.save()関数を呼び出します。この関数は、データベースに保存した後、Employeeオブジェクトを返します。createEmployeeメソッドに渡されるパラメータは、保存するすべての詳細を含むEmployeeモデルです。
  • 同様に、getEmployees()deleteEmployee()は、EmployeeRepositoryで拡張されるそれぞれのJpaRepositoryメソッドを呼び出します。
  • findAll()関数は、データベースのすべての従業員の詳細のリストを返します。
  • deleteById(empId)関数は、テーブルのemp_idと渡されるempIdが等しい従業員レコードを削除します。

従業員の詳細を更新するために、次の関数をdeleteEmployee(Long empId)メソッドの後に追加します。

// UPDATE
public Employee updateEmployee(Long empId, Employee employeeDetails) {
        Employee emp = empRepository.findById(empId).get();
        emp.setFirstName(employeeDetails.getFirstName());
        emp.setLastName(employeeDetails.getLastName());
        emp.setEmailId(employeeDetails.getEmailId());
          
        return empRepository.save(emp);                                
}

前述のメソッドについて詳しく見てみましょう。

  • updateEmployeeメソッドは、従業員ID(主キー)と新しい従業員の詳細を含む従業員オブジェクトの2つのパラメータを受け入れます。
  • 既存の従業員を更新するには、データベースの従業員IDがempIdと等しい従業員オブジェクトを最初に取得し、それをemp変数に格納します。
  • 古い従業員オブジェクトを取得したら、Employee.javaで定義されているセッターを使用し、employeeDetailsに格納されている新しい値でフィールドを更新します。
  • 最後に、empRespository.save(emp)関数が、更新されたempオブジェクトをデータベースに保存します。

コントローラークラスを作成する

EmployeeControllerという名前のクラスをcom.example.employee.controllerパッケージの下に作成し、コードを次の内容に置き換えます。

package com.example.employee.controller;
  
import java.util.List;
  
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
  
import com.example.employee.model.Employee;
import com.example.employee.service.EmployeeService;
  
@RestController
@RequestMapping("/api")
public class EmployeeController {
        @Autowired
        EmployeeService empService;
  
}
  • クラスの@RequestMappingアノテーションでは、このコントローラーで作成されたすべてのREST APIのベースURLを定義します。このベースURLの後には、各コントローラーメソッドに指定される個々のRESTエンドポイントが続きます。
  • クラスの@RestControllerの組み合わせは次のとおりです:
    • @Controller: このクラスがコントローラーであることをSpring Bootに通知します。
    • @ResponseBody: コントローラー内のメソッドの戻り値がREST APIのレスポンス本文として返されることを示します。
    • EmployeeService@Autowiredアノテーションを使用して依存関係として注入されます。

CRUD操作を実行するメソッドを作成する

コントローラーでのREST APIリクエストの実装に進む前に、これらのREST APIの構造について説明します。

従業員を作成するには、api/employeesエンドポイントを使用してPOSTメソッドを作成します。リクエスト本文は、クライアントからAPIに送信されるデータで構成されます。この場合、データは、データベースに保存する新しい従業員の詳細になります。JSONの内容は次のようになります。

{
  "firstName": "Joe",
  "lastName": "B",
  "emailId": "example@gmail.com"
}

従業員の詳細を取得するには、api/employeesエンドポイントを使用してGETメソッドを作成します。

従業員の詳細を更新するには、api/employees/{empId}エンドポイントを使用してPUT HTTPメソッドを作成します。{empId}は、APIに送信される従業員IDを含むパスパラメータです。リクエスト本文は、次に示すように、フォーマットされたデータベースで更新する新しい従業員の詳細で構成されます。

{
  "firstName": "Joe",
  "lastName": "B",
  "emailId": "newemail@gmail.com"
}

従業員を削除するには、/emp/{empId}エンドポイントを使用してDELETE HTTPメソッドを作成します。{empId}は、データを削除する必要のある従業員IDです。

これら4つのREST APIのメソッドを作成しましょう。次のメソッドをEmployeeService empServiceの後のEmployeeControllerクラスに追加します。

@RequestMapping(value="/employees", method=RequestMethod.POST)
public Employee createEmployee(@RequestBody Employee emp) {
    return empService.createEmployee(emp);
}

新しく追加したコードを詳しく見てみましょう。

  • value: エンドポイント。この場合は/employeesになります。valueフィールドに指定したエンドポイントは/employeesのみであり、/API/employeesではないことに注意してください。/apiはすべてのエンドポイントに共通であるため、クラスの@RequestMappingアノテーションのベースURLとして追加されています。
  • method: これは列挙型で表されるHTTPメソッドタイプです。create employeeエンドポイントの場合、HTTPメソッドはPOSTになるため、その値としてRequestMethod.POSTを追加します。
  • @RequestBody: エンドポイントのリクエスト本文をメソッドパラメータにマップするために使用されます。empには、このエンドポイントに渡されるリクエストJSONが含まれます。

同様に、他のすべてのREST APIのコードを追加します。これらのメソッドをcreateEmployeeメソッドの後のEmployeeControllerクラスに追加します。

@RequestMapping(value="/employees", method=RequestMethod.GET)
public List<Employee> readEmployees() {
    return empService.getEmployees();
}
  
@RequestMapping(value="/employees/{empId}", method=RequestMethod.PUT)
public Employee readEmployees(@PathVariable(value = "empId") Long id, @RequestBody Employee empDetails) {
    return empService.updateEmployee(id, empDetails);
}
  
@RequestMapping(value="/employees/{empId}", method=RequestMethod.DELETE)
public void deleteEmployees(@PathVariable(value = "empId") Long id) {
      empService.deleteEmployee(id);
}

一部のメソッドには@PathVariableが含まれていることに注意してください。これは、APIエンドポイントにパスパラメータが含まれることを意味します。@PathVariableは、エンドポイントのvalueパラメータに指定するパス変数をJavaメソッドフィールドにマップします。

アプリケーションを作成する

ビルドする前に、GitHubリポジトリに作成したプロジェクトを参照用に示します。

Eclipseのプロジェクトエクスプローラーで、employeeフォルダを右クリックし、[Run As](実行)を選択してから、[4 Maven build…](4 Mavenのビルド…)を選択します。

maven build

Edit Configuration](設定の編集)ポップアップが開きます。[Goals](ゴール)に「spring-boot:runと入力します。

spring boot run command

Environment](環境)タブに移動し、[Add](追加)をクリックします。[New Environment Variable](新しい環境変数)ポップアップが開きます。

Name](名前)フィールドに「spring.datasource.username」と入力します。[Value](値)に、MySQLユーザー名を入力します。[OK]をクリックします。

add new environment variable

同様に、[Name](名前)に「spring.datasource.password」、[Value](値)にMySQLパスワードを入力し、新しい環境変数を追加します。[Apply](適用)をクリックし、[Run](実行)をクリックします。

これで、アプリケーションのビルドが開始されます。ビルドが成功すると、コンソールに次のように表示されます。

spring boot build

コンソールに最後の数行が表示されている場合は、アプリケーションがデフォルトのポート8080で実行を開始したことを示しています。このポートが使用できない場合、Spring Bootは別の使用可能なポートを検出します。

https://localhost:8080のWhitelabel Error Pageがブラウザに表示されます。

次のセクションでは、4つのCRUD APIをテストする方法を学びます。

APIをテストする

Postmanは、APIの開発、テスト、文書化を支援するアプリケーションです。まだ作成していない場合は、無料のアカウントを作成します。

Postmanでワークスペースを作成します。このワークスペースでは、チームメートとプロジェクトの共同作業ができます。各ワークスペースには、APIのセットが定義されたフォルダを含む1件以上のコレクションを含めることができます。

Postmanでワークスペースを作成するには、次の手順に従います。

  1. Postmanアプリケーションを開きます。
  2. Workspace](ワークスペース)ドロップダウンを選択し、[New workspace](新しいワークスペース)をクリックします。

postman create workspace
  1. ワークスペースの名前(例: 「Spring Boot REST API Workspace」)を入力します。
  2. Visibility](表示)では、ワークスペースをチームメートに公開するかどうかを選択できます。この記事では、どちらのオプションも選択できます。
  3. 右下隅にある[Create Workspace](ワークスペースの作成)ボタンをクリックします。

new workspace configuration

コレクションを作成するには、左側のパネルにある[Create new Collection](新しいコレクションの作成)アイコンをクリックします。

new collection postman

コレクション名の横にある[Edit](編集)アイコンをクリックし、「Employee collection」(従業員コレクション)と入力します。

edit new collection

次に、Spring Bootアプリケーションで作成した4つのREST APIに対して、リクエストをコレクションに作成してテストします。

Postmanでリクエストを作成してテストする

左側のパネルで、作成したコレクションの[View more actions](その他のアクションを表示)をクリックし、[Add request](リクエストの追加)を選択します。

view more actions
list of actions on collection

リクエスト名を「Create Employee」(従業員の作成)にします。次のように、新しいリクエストが作成されます。

new request created

HTTPメソッドをPOSTに変更します。

http method

Enter Request URL](リクエストURLの入力)フィールドに「https://localhost:8080/api/employees」と入力します。

enter api url

/api/employeesエンドポイントの前には、アプリケーションが実行されているサーバーとポートが付きます。アプリケーションが別のポートで実行されている場合は、URLの8080を置き換えます。

リクエスト本文をこのリクエストURLエンドポイントに送信するには、[Body](本文)タブに移動し、[raw](未加工)チェックボックスを選択して、リクエスト本文の形式として[JSON]を選択します。

body tab in postman

表示されるテキストボックスに、次のデータを入力します。

{
    "firstName":"Nida",
    "lastName":"Khan",
    "emailId":"example1@gmail.com"
}

これらは、データベースに追加される従業員の詳細です。[Save](保存)をクリックし、[Send](送信)をクリックします。Postmanで取得するレスポンスは次のようになります。

{
    "id": 1,
    "firstName": "Nida",
    "lastName": "Khan",
    "emailId": "example1@gmail.com"
}

200 OKのレスポンスステータスに注目してください。これは、レスポンス本文が、データベースに保存された従業員レコードの詳細を含むJSONであることを示しています。

MySQL Workbenchに移動し、次のクエリを実行することにより、前述の従業員の詳細を持つemp_id=1の新しい行が作成されることを確認します。

SELECT * FROM employee;

mysql table

同様に、従業員にGET、DELETE、UPDATEリクエストを作成して実行します。

従業員にGETを実行するには、[Enter Request URL](リクエストURLの入力)フィールドに「http://localhost:8080/api/employees/」と入力します。[Body](本文)を空欄のままにし、[Send](送信)をクリックします。

get employee

特定のIDの従業員にUPDATEを実行するには、PUTリクエストを作成します。[Enter Request URL](リクエストURLの入力)フィールドに「http://localhost:8080/api/employees/1」と入力します。次の詳細を未加工のJSON本文に入力し、[Send](送信)をクリックします。

{
  "firstName": "Nida",
  "lastName": "K",
  "emailId": "example2@gmail.com"
}

edit employee

従業員レコードにDELETEを実行するには、DELETEリクエストを作成します。[Enter Request URL](リクエストURLの入力)フィールドに「http://localhost:8080/api/employees/1」と入力します。[Body](本文)を空欄のままにし、[Send](送信)をクリックします。

edit employee

Java Spring Bootプロジェクトの次のステップ

このチュートリアルでは、Spring Bootを使用してREST APIを構築する方法と、PostmanでAPIをテストする方法について学習しました。

ぜひ、以下の記事を参照し、Spring BootアプリケーションでTwilio APIを実装してください。

Nida氏は、フルスタック開発者です。彼女は実践から学ぶ人です。開発を通じて新技術を学ぶことが好きです。自由時間には、新技術について調べ、技術ブログを読み、データ構造とアルゴリズムの問題を解決することに励んでいますGitHubまたはLinkedInでフォローしてください