質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
GET

GETとはHTTPが対応するリクエストメソッドの一つです。クライアントからサーバーへ送られたURLパラメータのデータを取得する時必要がある時に使われます。

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

セッション

Sessionはクライアントがサーバに送ったすべてのリクエストのことを指します。

Q&A

解決済

1回答

8682閲覧

セッションとPOST/GETとリクエストの違いが分からない

ypk

総合スコア80

GET

GETとはHTTPが対応するリクエストメソッドの一つです。クライアントからサーバーへ送られたURLパラメータのデータを取得する時必要がある時に使われます。

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

セッション

Sessionはクライアントがサーバに送ったすべてのリクエストのことを指します。

0グッド

1クリップ

投稿2020/06/18 06:42

編集2020/06/18 07:01

セッションとPOST/GET、そしてリクエスト、3者の違いがいまいちよく分かりません。
どのように使い分けるのか、何に注目して違いを区別するのか、ご存じの方いらっしゃいましたら、教えていただけると嬉しいです。
どうぞよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2020/06/18 06:51

どのような文脈でしょうか。「内部インターフェース」という語が一般的ではありません。
hentaiman

2020/06/18 07:28

誰視点での区別?
ypk

2020/06/18 07:31

設計者視点での区別です
hentaiman

2020/06/18 07:37

質問文からはどういう風に分かってないのかが全く分からないんですが、 ・リクエストにしようかPOSTにしようか ・GETにしようかセッションにしようか みたいな迷い方をしているの?
ypk

2020/06/18 07:57

失礼しました。 仰せの通りです。 何を基準にこの3者を使い分ければよいのかがいまいちよく分からないため、使いこなすコツのようなものを知ることができたらと思い質問しました。
maisumakun

2020/06/18 08:02

上に書いたこととも重なりますが、文脈がわからないので回答しづらい状態です。 (そして、「リクエスト」と「POST/GET」は対立する概念ではなく、「POSTリクエスト」や「GETリクエスト」もごく日常的に行われます)
hentaiman

2020/06/18 08:05

よし、httpリクエストの中にpostやgetがあるんだけど、ここで聞いたりてきとーな誰かがまとめた記事読むよりもwikiみて理解した方が役に立ちそうなのでまずはwikiを見ましょう https://ja.wikipedia.org/wiki/Hypertext_Transfer_Protocol それが済んだらPOSTとGETを使って何かプログラム作りましょう まずはそこからです
ypk

2020/06/18 08:17

本を読んでもいまいちよく分からないから質問したんですけど。皆さんがどのように理解しているのか参考にできたらと思い質問しましたがもういいです。ありがとうございました。
hoshi-takanori

2020/06/18 08:21

それは失礼しました。ちなみに、お読みになったのはどの本でしょうか?
hentaiman

2020/06/18 08:26

皆さんの理解はそれこそwikiの内容なんですが・・・それともRFC 7231でも読みますか?
otn

2020/06/18 08:32

漠然と聞いても、本と同じ回答しか得られませんよ。 自分の理解のどこが間違っているのかを判別してもらうようなアプローチが必要です。
guest

回答1

0

ベストアンサー

リクエスト(HTTPリクエスト)というのは、ブラウザからサーバーへ送信されるデータのことです。
そして、リクエストの先頭には、GETやPOST、HEADなどの「メソッド」が記載される約束です。メソッドはリクエストの種類を表すものです。

大まかに言って、GETは情報をくださいという指令、POSTは情報を更新してくださいという指令です。これら以外にもDELETE、PUTなどもありますが、JavaScriptからのみ送信できるので、いったん気にしなくてもよいと思います。
ただし、GETやPOSTの使い分けは単に指針ですので、GETで更新処理をしたり、POSTで検索する(情報提供の一種)ことはよくあり、先の指針が必ず守られているわけではありません。

GETやPOSTに関連して、ブラウザからサーバーに情報を渡す方法があります。URLに情報を渡す方法をクエリ文字列といい、http://example.jp/search.php?key=hoge の場合、key=hogeがそれです。クエリ文字列は「GETパラメータ」と呼ばれる場合もあります。
POSTリクエストの場合は、URLとは別のところでパラメータを渡す方法がデフォルトで、リクエストボディといいます。リクエストボディの例を示します。以下はPOSTリクエスト全体ですが、最下行のkey=hogeがリクエストボディです。その一行上が空行(なにもない行)ですが、空行の後ろ全体がリクエストボディです。

HTTP

1POST /update.php HTTP/1.1 2Content-Type: application/x-www-form-urlencoded 3Content-Length: 8 4Host: example.jp 5 6key=hoge

「セッション」という言葉は様々な意味で使われますが、「セッション管理」などの形で使われるものを説明します。
GETやPOSTのリクエストでは情報(パラメータ)を渡すことができますが、それらのパラメータはブラウザの利用者が自由に変更できてしまいます。それだと具合の悪い場合があります。代表例は、「現在のログイン状態」でして、現在 ockeghem というユーザー名でログインしてる状態は、クエリ文字列やリクエストボディで送るわけにはいきません。簡単に「なりすまし」ができてしまうからです。
このため、利用者の状態をサーバー側(あるいは他の利用者から変更できない方法)で保持する仕組みが生まれました。これを「セッション管理」と呼びます。セッション管理には通常クッキーというものを使います。クッキーは質問の中に出てきていませんので、説明は割愛します。

さて、上記の説明で疑問が晴れるかどうか、いささか心もとないですが、これを読んで分からないことがあれば、別途質問していただければと思います。

投稿2020/06/18 10:14

ockeghem

総合スコア11701

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ypk

2020/06/18 11:12

ご丁寧にありがとうございます。 大変わかりやすい回答、嬉しいです。 リクエスト(HTTPリクエスト)について。 こちらは、例えばログイン画面からログインIDとパスワードをサーバに渡すときは、ログインIDとパスワード=リクエストという認識で大丈夫でしょうか。 勉強不足で申し訳ないのですが、どうぞよろしくお願いいたします。
ockeghem

2020/06/18 11:19

ログイン処理は通常POSTで処理します。 その際に、ブラウザからサーバーに送られるデータが「リクエスト」です。前述のようにメソッドはPOSTを使います。 そのPOSTリクエストの「リクエストボディ」にログインIDとパスワードを含めます。id=ockeghem&password=P@ssw0rd という感じです。ちなみに、リクエストボディのことを「POSTパラメータ」と呼ぶ場合もあります。
ypk

2020/06/19 03:57

ありがとうございます。 リクエストとポストの違いについて大変勉強になりました。 最後に、 >ブラウザからサーバーに送られるデータが「リクエスト」です。 これについて、もし可能であればもう少し詳しく教えていただけたら幸いです。 ブラウザからサーバーに送られるデータというのは、ログインIDとパスワードそのものではなく、id=ockeghem&password=P@ssw0rdのような形のリクエストボディになるという認識で間違いないでしょうか。 お手数をおかけしますがどうぞよろしくお願いいたします。
ockeghem

2020/06/19 10:02

リクエストというのは、元の回答で「HTTP」と書いてある箇所で、POSTで始まり、key=hoge で終わる6行全部がリクエストです。そのうち、リクエストボディはkey=hogeの部分です。 id=ockeghem&password=P@ssw0rd はリクエストボディ、すなわちリクエストの一部になります。ちなみに、リクエストからリクエストボディを取り除いた部分は「リクエストヘッダ」といいます。
ypk

2020/06/19 12:55

ご丁寧にありがとうございました。 大変勉強になりました。 今後ともよろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問