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?

GETとPOSTどっち使えばええねんに決着をつけたい

Posted at

はじめに

タイトル通り、GETとPOSTどっちやねん問題に決着つけたいです。
なんとなくではずっと理解してるけど、たまに「これはGETでええんか?こっちは情報更新行ってるからPOSTか?」と悩んでしまいます。
だから、今日はっきりと書き記してもう今後迷わないように決着をつけようと思います。

前提事項

PUTやらDELETEやら他にもいろいろあるけど、今回はGETとPOSTに限定します。
また、二つの細かい違いというよりは、「使い分け」の部分に焦点を置きます。

結論

結論から書くと、下記の通り私は認識しました。

  • GET
    • リソースの取得のみ行う場合
    • パラメータに機密情報が含まれない場合
  • POST
    • パラメータに機密情報が含まれる場合
    • 情報の登録や更新を行う場合
    • 送るデータ量が多い場合
      (GETはURLにパラメーターを含むため、2048文字が限界。POSTは制限なし)

何が機密情報なのか

基本的に、名前や電話番号、パスワードの個人情報がそうです。
商品IDなどは単なる物を対象にしたIDなので該当しませんが、個人IDは個人を特定するものなので該当します。

なぜ迷うのか

そもそもなぜ迷うのかと言うと、どっちを使っても技術的にはある程度同じことができてしまうからです。
キャッシュがどうとか言われてもいまいちピンとこないし、とりあえずPOSTにしとけばええんちゃうとなってしまいます。
リソースの取得はGETと言われても、じゃあ取得してかつ情報の更新も少し行う時はどっちがいいのともなります。例えば、リソースを取得したときに取得日時を登録する時とかです。
だから、定義をしっかりと確認し、メリットデメリットをしっかり理解することが、正しく使い分けるために必要です。

定義

HTTPメソッドは、RFCという文書で定義されています。
要点を抜粋してみます。

GET

The GET method requests transfer of a current selected representation for the target resource.

「GETメソッドは、webサーバー上のリソースに対して、現在の状態の転送のリクエストを要求する。」と書いてます。

When information retrieval is performed with a mechanism that constructs a target URI from user-provided information, such as the query fields of a form using GET, potentially sensitive data might be provided that would not be appropriate for disclosure within a URI (see Section 17.9). In some cases, the data can be filtered or transformed such that it would not reveal such information. In others, particularly when there is no benefit from caching a response, using the POST method (Section 9.3.3) instead of GET can transmit such information in the request content rather than within the target URI.

ここでは、機密情報のことについて書いてます。
URIに含むには適していないデータが含まれる場合があり、その場合はデータのフィルタリングや変換でデータを変えるか、キャッシュするメリットがない場合はPOSTを使うと書いてます。

#おわりに
今回は、何気なく使ってたHTTPのメソッドの定義を確認しました。
他にも何気なく使ってるけど理解は曖昧なものなどあると思うので、しっかり公式定義を確認することを大事にしていきたいと思います。

間違ってるところなどあればご指摘いただけると幸いです🙇‍♂️

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?