🙆

HTTP 抑えておくこと(まとめ)

2023/02/25に公開

HTTP(Hyper Text Transfer Protocol)

  • HTTPとは、TMLなどのテキストファイルや画像などのコンテンツのやり取りをするときに使われるプロトコル。

HTTPメッセージによる「要求」と「応答」

  • HTTPでは、Webブラウザが要求を送り、Webサーバーがその要求に対して、応答を返すやり取りを繰り返すことでWebサイトの閲覧を可能としている。このやり取りに利用されるのが「HTTPメッセージ」という
  • Webブラウザの欲しい要求をWebサーバーに伝えることができる

HTTPリクエスト

  • WebブラウザからWebサーバーに対して、どのような処理をして欲しいか?というリクエストの要求内容を記述し伝える。(特定の情報を取得したい、特定の情報を送信したいなど)

HTTPレスポンス

  • リクエストを受け取ったWebサーバーに対して、リクエストを処理して、その結果をHTTOPレスポンスとして、応答する。(WebブラウザからリクエストされたHTMLなどのデータなど)

HTTPメソッド4種類(GET,POST,PUT,DELETE)について

  • HTTPメソッドには、基本的に4種類存在し、基本的には、CRUDに対して対応している(カッコ内に定義)
    • GET(Read)
    • POST(Create)
    • PUT(Update,Create)
    • DELETE(Delete)
  • これ以外にも存在するが、頻繁に使われるものはほとんどGETとPOSTである。

GETメソッド

  • GETはリソースを取得するためのメソッド。

  • Webページを見たいときは、
    「Webページを取得したいです」というGETリクエストを送信

    Webページのhtmlなどを受け取る。

  • 以下のURLにGETリクエストを送信した場合、「ユーザー一覧」を取得するという意味になる。

ユーザー一覧のURL
"https://example.com/user"
  • 以下のURLにGETリクエストを送信した場合、「ユーザーIDが1のユーザーのみ」を取得するという意味になる。
ユーザーIDが1のユーザーのみ取得するURL
"https://example.com/user?id=1"

POSTメソッド

  • POSTはリソースを作成するためのメソッド

  • 機密性の高いデータ(パスワードなど)や大量のデータ(リクエストパラメータに収まらない)を送信するのに優れている。

  • 主に使われていること

    • ユーザーなどの登録,ログイン
    • ツイート
    • ブログ投稿
    • お店の予約サイト
  • 予約、登録は言い換えると、予約データベースに予約データを追加するので、ユーザーデータベースにユーザーデータを登録する。ので、リソースの作成に該当している。

  • ログインする場合

ユーザーログイン時URL
"https://example.com/user/log_in"

情報をメッセージボディ(データを格納する場所)に記録してリクエストを送るする。

メッセージボディ
"https://example.com/?name=test&pass=123

PUTSメソッド

  • PUTはリソースの更新/作成を行うためのメソッド。リソースの作成はほとんどPOSTが使われることが多いため、更新用のメソッドと覚えておくと良いです。

  • 主に使われていること

    • 既存ユーザー情報の更新
    • 既存ブログ記事の更新
    • 以前に投稿したレビューの更新

DELETEメソッド

  • DELTEはリソースの削除を行うためのメソッド。

  • 主に使われていること

    • ユーザーの削除
    • ブログ記事の削除
    • ツイートの削除
    • レビューの削除

PUT/DELTEはフロントエンドではあまり見かけない

  • PUTメソッドやDELETEメソッドはあまり見かけることはない。

  • 理由は、一般的なWebサイトでは、実際POSTメソッドによって更新や削除も行っているものが多い。

  • 例えば、上記で「ツイートの削除」においてDELTEメソッドを使っていると書いたが、
    Chromeのディベロッパーツールで確認すると、POSTによって削除されている。
    (裏側のAPIではDELETEを使っているかもしれない)

  • これには以下のような事情がある。

    • HTTPメソッドの機能面で見ると、PUTもDELETEもPOSTで代用可能
    • htmlのformがPUT/DELETEをサポートしていない
    • PUT/DELETEそのものに認証機能がなく、セキュリティ的に気を使うことが多い(HTTP1.1)
    • ユーザーから見えないWebアプリケーション同士の通信や、
    • 外部に公開していないAPIにはPUTやDELETEがしっかり定義されていることは多い

Discussion