0
0

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 3 years have passed since last update.

HTTPメソッド GETとPOSTの違い

Posted at

恥ずかしながら、今まで勘違いしていたのですが、それに気付く機会がありありましたので、これを機に勉強しなおして備忘録としてまとめておきます。

今まで勘違いしていたこと

名前の通り、getは何かを取得、postはフォームデータ等の何かを送信する、ためのものだと思っていましたが、間違いではないのですが、それだけではありませんでした。
getでも送信処理はできるし、postでも何かを取得することができる、また、DBに登録するしないや、レスポンスとして返す値はサーバが決めることなので、HTTPメソッドとは別次元の話であるということがわかりました。

勘違いに気付くきっかけ

参画したプロジェクトのHTTP通信関連のサービスクラスを覗いてみたら、全てpostメソッドで書かれていました。
おや?フォームデータを送信する処理じゃないのに、なんでpostなんだ?と思い調べてみて、勘違いに気付きました。

特に大きな違い

パラメータの渡し方の違いが大きいかと思います。

get

クエリパラメータで渡します。
クエリパラメータとは、URLの最後に?で付加するあれです。これを使って、サーバーにパラメータを渡します。
クエリパラメータを付与した状態で、ブックマークに登録できるので、保管はしやすいが、パラメータを第三者に見られるため、機密性の高い情報を送信するときはgetは使用するべきではない。

post

body部に含めて渡します。bodyに含めることで、第三者に見られる可能性が低くなり、セキュリティ面ではgetより高い特徴があります。ただ、postなら安全という話ではなく、機密性の高い情報であれば、暗号化は必須。

メリデメ

GET POST
パラメータの渡し方 クエリパラメータ body
セキュリティ 他人に見られやすいため、低い 比較的高い
パラメータの保管 しやすい しにくい

参考にしたサイト、書籍
https://qiita.com/kanataxa/items/522efb74421255f0e0a1
https://gihyo.jp/book/2010/978-4-7741-4235-7

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?