【今更ながらSpring BootでWEB開発 #7】 REST APIの作成

Web

今回の目標

前回はSpring Data JDBCを用いたCRUDの方法について、一覧ページと詳細ページを実装しながら説明しました。

【今更ながらSpring BootでWEB開発 #6】 データベースの操作
今回はJava Data JDBCを用いた基本的なクエリの実行について、一覧ページと詳細ページを実装しながら説明していきます。通常のPreparedStatementを使用するよりもより簡単に実装できるためこれを機に覚えましょう。

今回は前回までに作成したService・Daoクラスを利用して、REST APIの作成について説明していきます。

※ この記事ではRESTについての説明はしません。

少しだけ準備

前回更新(Update)を実装していなかったので実装しておきます。ここではDAOのサンプルのみ載せておきます。(Serviceクラスは割愛させてください。)

@Override
public void update(Inquiry inquiry) {
  jdbcTemplate.update("UPDATE inquiry SET name = ?, email = ?, contents = ? WHERE id = ?",
    inquiry.getName(), inquiry.getEmail(), inquiry.getContents(), inquiry.getId());
}

REST用Controllerの作成

REST APIを作成するために新しくControllerクラスを作成します。クラス名は適当で構いません。

これまでのControllerクラスには、クラスのアノテーションとして「@Controller」を追加していました。RESTの場合には「@RestController」を代わりに追加します。

@RestController
@RequestMapping("/api/inquiry")
public class InquiryRestController {

  @Autowired
  private InquiryService service;

  //ここから実装していく
}

各処理の実装

InquiryのCRUDを次のように実装していきます。

パスメソッド説明
/api/inquiry/{id}GET1件取得
/api/inquiryGET全件取得
/api/inquiryPOST更新
/api/inquiryPUT登録
/api/inquiryDELETE削除

1件取得

@GetMapping("/{id}")
@ResponseBody
@ResponseStatus(HttpStatus.OK)
public Inquiry getOne(@PathVariable("id") int id) {
  return service.findById(id);
}

IDの指定は前回同様パスパラメータを用います。コードを見ると今までに見たことがないアノテーションがあります。

@ResponseBody」は、返値に設定しているクラスのインスタンスをjsonに変換してレスポンスを返してくれるようになります。クラスに「@RestController」を追加している場合は省略可能です。

@ResponseStatus(HttpStatus.OK)」は、追加すると処理が成功した場合のHTTPステータスとして200を送信するようになります。HttpStatusは列挙型(enum)で、BAD_REQUEST(400)やNOT_FOUND(404)などのステータスも定義されています。

全件取得

@GetMapping
@ResponseBody
@ResponseStatus(HttpStatus.OK)
public List<Inquiry> getAll() {
  return service.getAll();
}

基本的に1件取得する場合と変わりはありません。データが複数になるので返値をList<Inquiry>にするだけです。

更新・登録・削除

@PostMapping
@ResponseStatus(HttpStatus.OK)
public void update(Inquiry inquiry) {
  service.update(inquiry);
}

@PutMapping
@ResponseStatus(HttpStatus.OK)
public void save(Inquiry inquiry) {
  service.save(inquiry);
}
  
@DeleteMapping
@ResponseStatus(HttpStatus.OK)
public void delete(@RequestParam("id") int id) {
  service.delete(id);
}

更新・登録・削除はそれぞれPOST・PUT・DELETEメソッドによって処理を分岐させます。POSTは「@PostMapping」を追加することは前回までの内容でわかると思います。PUT・DELETEについては「@PutMapping」、「@DeleteMapping」を追加します。

REST APIの確認

実装したREST APIの確認方法についてですが、GETについてはブラウザでURLをたたけば結果が表示されます。がそのほかのメソッドについては少し面倒なのでツールを使います。この記事では2つ紹介しますが、詳しい使い方は説明しません。

Postman

Postman | The Collaboration Platform for API Development
Simplify each step of building an API and streamline collaboration so you can create better APIs—faster

上画像では全件取得した結果が表示されています。REST APIの確認だけであれば操作は単純で、メソッドとURLを入力してSendを押すだけです。

登録の場合はメソッドをPUTに変え、Bodyにパラメータを設定してSendします。

ARC(Advanced REST Client)

Advanced REST Client
Advanced REST Client official website. Download and install advanced REST test tool.

ARCも基本的な使い方はPostmanと同じです。こちらのほうがUIはシンプルな感じです。ちょっと大きいですが。

またARCはChromeのアプリとしても提供されているのでPostmanより手軽に使えます。

Advanced REST client
The web developers helper program to create and test custom HTTP requests.

あとがき

半分ツールの紹介だった気がしますが、Spring BootでREST APIを作成する方法を説明しました。REST APIについてもアノテーションを駆使することで簡単に実装することができます。

実際は認証周りも必要なのですがまたの機会に説明できればと思います。(まだそこまでいけていない)

 

- Spring Bootのおすすめ書籍はコチラ -

コメント

タイトルとURLをコピーしました