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の違いについて