0
0

More than 1 year has passed since last update.

Get通信とPost通信の実装の違いをSpringBootで解説してみた

Last updated at Posted at 2023-01-14

Get通信とPost通信の違い

この記事では、Get通信、Post通信におけるURLの違いと、パラメータの受け取り方をメインに扱います。
Get通信、Post通信とはなんぞや?という方や、Get通信やPost通信の使い分けに関して知りたい!という方は記事の対象外となります。あらかじめご了承ください🙇‍♂️

URLの違い

Get通信は、URLに対して、クエリ(パラメータ)を設定することができます。
URLの?が「ここからがパラメータの始まりだよ〜」という意味を示しています。
値の渡し方は【パタメータ名=値】で渡されます。
&でパラメータを複数渡しています。

URL(Get通信)
 /test?id=1&name=test

Post通信はパタメータをURLにくっつけずに、値を渡す方式です。
formタグの中の要素を渡すことができます。

URL(Post通信)
 /test

<!-- nameタグがパラメータ名、valueタグが値になります。 -->
<form method="post">
    <input type="hidden" name="id" value="1" />
    <input type="hidden" name="name" value="test" />
</form>

サーバー側でパラメータを受け取る方法(SpringBoot)

■Get通信の場合(/test?id=1&name=test)
TestController.java
@Controller
@RequestMapping
public class TestController {
    @GetMapping("/test")
    public String test(@RequestParam("id") String id, @RequestParam("name") String name){
        // 以下省略
        return "index";
    }
}

■Post通信の場合(/test)

index.html(thymeleaf)
<!-- th:objectでPost通信で渡したいJavaオブジェクトを指定できる。先頭は小文字にする。 -->
<form method="post" th:object="test">
    <input type="hidden" name="id" th:field="id" value="1" />
    <input type="hidden" name="name" th:field="name" value="name" />
</form>
Test.java
import lombok.Getter;
import lombok.Setter;

public class Test{

    @Getter
    @Setter
    private String id;

    @Getter
    @Setter
    private String name;
}
TestController.java
@Controller
@RequestMapping
public class TestController {
    @PostMapping("/test")
    public String test(@ModelAttribute Test test){
        // 値の1が入ってる。
        String id = test.getId();
        // 値のnameが入ってる。
        String name = test.getName();

        return "index";
    }
}

まとめ、参考

ざっくりですが、Get通信、Post通信の実装の違いをSpringBootを使って解説してみました。
間違いなどありましたら、お気軽にご指摘をお願いします!

■参考にしたサイト
GET/POSTの違い&実際の使い分け方
GETとPOSTの違いについて

0
0
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
0
0