LoginSignup
1
3

More than 3 years have passed since last update.

GET/POST

Last updated at Posted at 2020-04-28

備忘録です。
間違いなどございましたらご指摘ください。

クライアントとサーバーのやりとり

Webにおいてサーバとクライアント間のやりとりは基本的にHTTPというプロトコルを用いる。
HTTPとは、WebサーバとWebクライアントの間でデータの送受信を行うために用いられるプロトコル。
Webの世界でのやりとりは基本的にリクエスト/レスポンスで成立。

  • クライアントからサーバへの要求することをリクエスト
  • サーバからブラウザへ応答することをレスポンス

HTTPの仕様

HTTPにはいくつかの仕様がきめられていて
GET/POSTというのはその仕様で取り決められたHTTPの一部。
(他にもHEAD/OPTIONS/PUT/DELETEなどが定義されている。)

GET

GETは指定したリソースの表現を転送するようにリクエストするメソッド。
(つまり、何か情報を検索したり取得するために使うためのメソッド。)
例えば、ブラウザでURLを入力し検索するとき、無意識にGETメソッドを使っている。

GETメソッドを使ってデータを送信する場合は、URLの後ろに送りたいデータを付与して送れる。
(データを取得したい時に使用、データベースの書き換えが必要ない場合。)

POST

POSTは指定したリソースを実装した機能に従って処理をする機能
GETとは反対に冪等でないかつ安全でないと定義されている。

POSTメソッドを利用してデータを送信する場合は、HTTPリクエスト内のメッセージボディにデータを含めて送る。
リクエストとして送信されるデータはメッセージボディ部に含まれる。
(メッセージボディは、HTTPリクエストのパラメータ内容を渡す場所)

以下のようなデータを変更したい時に使用。

  • HTMLのformタグに入力された内容をDBへ登録する
  • ブログの記事を投稿する
  • 新しいユーザを登録する
  • 既存のデータに新しい情報を付加する

リクエストパラメーターの付加の方法

GETはURLにクエリとして追加することが可能
上記で説明したとうり、GETメソッドを使ってデータを送信する場合は、URLの後ろに送りたいデータを付与して送れる。
(データを取得したい時、データベースの書き換えが必要ない場合。)

【例】
GET: /foo/bar?itemId=xxxx-xxxx
「URL?パラメータ名=値」という形式
「?」パラメータのはじまり
「&」パラメータの切れ目
「=」挟んだ左側がGETの変数名、右側が渡される値

一方、POSTはBodyをリクエストに含めることも可能。
また一般的にあまり使われないが、クエリを追加することもできる。
POST: /foo/bar?user="taro"
param:{"itemId": "xxxx-xxxx”}

まとめ

  • GETはリソースを取得するときに使うもの
  • GETは情報を取得するときに使うもの
  • POSTはリソースに対して特有の処理をするときに使うもの
  • POSTは新しい情報の登録をするときに使うもの
1
3
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
1
3