【Spring Boot】GET・POSTの実装

最近、仕事で Spring Boot を使っているので、勉強した内容について書いていきます。

#開発環境
Eclipse（日本語化プロジェクト）の最新のJava版をダウンロードして使用します。
`Spring Boot`を使うとなると、`Eclipse Spring Tool Suite (STS) `が必要になりますが、`Pleiades All in One Eclipse`をダウンロードすれば、既に使えるような状態になっているかと思います。

#プロジェクトの作成
eclipseで workspace を開きます。
新規プロジェクト作成ウィンドウを開き、「Spring Boot スターター・プロジェクト」を作成します。
これにより、デフォルトのSpring boot プロジェクトが作成されたかと思います。
<img width="400" alt="cff108b4-dc20-9697-06f4-c749e9ee936f.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/762492/1f894121-0d88-9b73-b444-6839efd7baba.png">

#コーディング
プロジェクトは作成できたので、次は `Controller`を作成します。
一番最初に「`Controller`を作成する」と聞いたときは、何のことを言っているんだ？と思いましたが、Spring boot では、アノテーションの`@Controller`か`@RestController`が設定されたクラスを作成することが、「`Controller`を作成する」ということになるそうです。
`@Controller`では`@ResponseBody`を設定する必要がありますが、`@RestController`はそれが必要ないので、今回は`@RestController`を使って書いていきます。
（アノテーションとか、`@Controller`の説明は、実装には影響しないかと思われるので、今回しません。機会があればそのあたりを書こうと思います。）

GETメソッドには`@GetMapping`を設定し、POSTメソッドには`@PostMapping`を設定します。
説明文でごちゃごちゃ書いてもよくわからないかと思いますので、作成したコードを下記に記載しました。

```ControllerA.java
package com.example.demo.controller;

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;

/**
 * http://localhost:8080/controller で呼び出せる
 */
@RestController
@RequestMapping("/controller")
public class ControllerA {

	/**
	 * GETメソッド
	 * http://localhost:8080/controller/get_method で呼び出せる
	 * 
	 * @param param1 URL リクエストで ?get_param=~ で受信できるパラメータ
	 */
	@GetMapping("/get_method")
	public String getA(@RequestParam("get_param") String param1) {
		// テスト用のURL
		// http://localhost:8080/controller/get_method?get_param=test
		return "get メソッドのレスポンス_param->" + param1;
	}

	/**
	 * POSTメソッド
	 * 
	 * @param param1　URL リクエストで ?post_param=~ で送信できるパラメータ
	 */
	@PostMapping("/post_method")
	public String postMethod(@RequestParam("post_param") String param1) {
		// テスト用のURL
		// http://localhost:8080/controller/post_method?post_param=test
		return "POST　メソッドのレスポンス_param->" + param1;
	}
}
```

#実行
プロジェクトの実行ですが、右クリックし、「実行」→「Spring Boot アプリケーション」で実行できます。
<img width="400" alt="spring boot 実行.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/762492/44f162bd-4f3d-973d-c615-4ab7b1bf854a.png">

###・GETリクエスト
コード内のコメントでも記載していますが、プロジェクトを実行した状態で、http://localhost:8080/controller/get_method?get_param=test をブラウザーで開くことで呼び出せます。
呼び出した結果は下記の様になります。
<img width="400" alt="GET_test.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/762492/50790a0a-3e69-731f-ef90-c43e98fd01c7.png">

###・POSTリクエスト
POST用に下記のコードを書きました。

```post_test.html
<!DOCTYPE html>
<html lang="ja">
    <form method="post" action="http://localhost:8080/controller/post_method">
        <input type="text" name="post_param" value="default">
        <input type="submit" value="post送信">
    </form>
</html>
```

上記のコードを貼り付けた htmlのコードを webブラウザーで表示すると下記の様になります。
<img width="400" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/762492/8f23967b-5529-162a-60ad-21bcef57de56.png">
「post送信」押下の結果は下記の様になります。
<img width="400" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/762492/e51f3715-e76f-75d4-8d33-486644aa0648.png">
GETの場合と大差はないですが、POST用の結果として表示されていることがわかるかと思います。


#作成したGithubリポジトリ
今回作成した内容は、下記に格納しておきました。
https://github.com/NagaJun1/test_spring_boot

#終わりに
Qiitaを書くのは深夜に限る！
というか、深夜テンションじゃないと書けない。
日中に書くコツを教えてください（笑）