2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

SpringBootでアプリを作成してみた【REST API開発入門】

Last updated at Posted at 2023-04-18

RESTとは?

  • クライアントから、サーバに実施してほしいことをHTTPプロトコルを用いて依頼する ⇨ (例)http://hostname/yattehosiikoto
  • 標準的なHTTPリクエストメソッド(GET/POST/PUT/DELETE)を使用して、APIを実装する
  • JSONを使用してやりとり ⇨ JavaScript Object Notationの略。
Sample.json
[
{"id" : "1" , "name" : "iphone"},
{"id" : "2" , "name" : "Android"},
]

HTTPリクエストメソッドとは?

HTTPリクエストにはいくつかのメソッドが存在し、以下の4種類のメソッドを利用して、APIの処理を区別するように利用する

  • GET・・・ID等によって、対象のデータもしくはリストを取得する
  • PUT・・・ID等によって、対象のデータを置き換える、データを更新する
  • POST・・・対象のデータをサーバ上に送信する時に使用し、データを登録する
  • DELETE・・・ID等によって、対象のデータを削除する

SpringBootとは?

  • SpringBootとは、Springアプリケーションを簡単に・迅速に作成する事ができる機能を提供するフレームワーク

Maven

  • Javaプログラムをコンパイル・テスト・パッケージ・デプロイを行うツール(類似:Ant、Gradle)
  • 使用するJarライブラリ群の依存性を管理
  • pom.xmlという設定ファイルに、プロジェクトの情報、ライブラリ、プラグイン等を記述する
<大まかな流れ>
  1. Mavenがpom.xmlを読み込む
  2. ローカルリポジトリにダウンロードされる
  3. ビルドなど、定義されたライフサイクルが実行される
  4. プラグインが実行される

Javaアノテーション[@]

  • JDK1.5から追加された機能『注釈』の意、アノテーション型
  • 補足として機能したり、フレームワークに意図を伝える(処理を指示)できる
  • フレームワークで用意されたアノテーションを使えるようになる事が重要
  • クラスやメソッド、フィールドの名の上に、@アノテーション名 で記述
  • アノテーションには引数を渡すことができる
Saple.java
//利用方法(フレームワークが用意されたものを使う)
@AnnotationName(value = "文字列")
public class Sample{

}

Dependency Injection

  • 一般的なJavaプログラムでは、あるクラスから他のクラスを呼び出す時には
    new(インスタンス化)する必要があり、これを『依存性のある状態』と呼ぶ。
  • インスタンスの生成をspring Boot(DIコンテナ)に任せ、インスタンス生成、参照の解決を自動で行ってもらう事を指す。依存性をDIコンテナが管理し、適用してくれる。
  • @Autowiredというアノテーションを記述するだけで、SpringBoot管理化にある他のクラスを呼び出す事ができる。

Controller

Controllerとは、リクエストの受付、必要となる業務のロジックを呼び出し連携させる役割を持つ。つまり、アプリケーション全体の制御処理を受け持つ部分を指す。

  • クライアントからのリクエストの受付処理
  • 入力データの受付処理
  • 入力データの検証
  • ビジネスロジックの呼び出し
  • エラー処理

spring initializrとは?

公式:spring initializr

Spring Initializrは条件に合わせてSpring Bootプロジェクトの雛形を生成するWebサービス。Web UIからプロジェクト設定や利用するSpring Projectを指定することで、簡単にSpring Bootプロジェクトの開発を始めることができる。

  1. ブラウザを開き、(https://start.spring.io/)を入力し、開く
  2. 下記を入力し、『GENERATE』ボタンを押す
  • Group:
  • Artifact:
  • Package name:
  • Dependencies:

Spring BootでHello World!

ブラウザからHTTP GETを利用してSpringBootに対してリクエストを送り、単純に文字列を返すだけの簡単なAPIを作成する。

作成するControllerクラス

@RestController
public class HelloController {

 @GetMapping(value="/")
 public String index() {
   return "アクセス成功です";
}
@GetMapping(value="/hello")
 public String index() {
   return "Hello World";
}
@GetMapping(value="/welcom")
 public String index() {
   return "SpringBootへようこそ";
} 
}

@RestController

  • 本アノテーションでSpringBootはControllerクラスとして認識
  • メソッドの戻り値が、レスポンスの戻り値となる
  • Web API用のControllerで利用する

@GetMapping

  • HTTP Getリクエスト用のアノテーション
  • value 属性にURLのパスを指定する
  • 紐づいているメソッドが実行される

実行するポートを変更する

SpringBootは、デフォルトで8080ポートで起動するが、application.propertiesに設定する事で任意のポートに変更できる

application.properties
server.port=8081

http://localhost:8081 で起動する

① main/java にcontrollerファイルとHelloController.javaを作成する
②controller/HelloController.javaを下記のように編集する

controller/HelloController.java
package com.udemy.spring1hello1.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

@GetMapping(value="/")
 public String index() {
   return "アクセス成功です";
}    

@GetMapping(value="/hello")
 public String hello() {
   return "Hello world!";
}    

@GetMapping(value="/welcome")
 public String welcome() {
   return "SpringBootへようこそ!";
}    
}

③ Start Debuggingを行い、ローカルホストで確認する

Advanced Rest Clientとは?

Advanced Rest Clientは、制作したAPIの動作テストを行うツールで、APIのURLを指定して実行し、簡単にAPIに対し、データを送信、APIから受信したデータを確認できる。作成するAPIに対して、実行結果を確認する際に使用する。

@Serviceクラスの説明

@Serviceアノテーションを付与したサービスクラスに実装する

■ controllerクラス
リクエストの入口で、必要な業務処理を呼び出す。複雑な処理は基本的には書かない。
■ Serviceクラス
業務処理の元となる箇所。ビジネスロジックはサービスクラスに実装する。

@Autowiredを使う

controllerクラスから、Serviceクラスを呼ぶ時は、@Autowiredアノテーションを使用する。Spring Bootがサービスクラスのインスタンスを自動で注入してくれる。@Service、@Rest Controller等、SpringBoot管理のコンポーネントのインスタンスを取得できる。

@PathVariable

特定の商品番号を取得するケースで、動的にURLに値をしてする仕様を実装する。値の受け取り方として、@PathVariableアノテーションを指定する事で受け取れる。
@GetMappingアノテーションのURLマッピングを指定する箇所には、動的に変わる部分は中括弧で表す。

@RestController
ItemControllerクラス 
・・・
@GetMapping("/items/{id}")
public Item getItem(@PathVariable("id")String id){
   return itemService.getItem(id);
}
・・・

参考サイト

【ゼロからスタート】マイクロサービスのためのSpring Bootで始めるREST API入門

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?