HTTPプロトコル
httpの重要な特性
1クライアント、サーバ構造を採用する。
メッセージを介してクライアントが要求を送信し,サーバが応答する構造.
これは、サーバにデータとロジックを集中させ、クライアントのURIと可用性を向上させるためです.
=>それぞれ独立した発展が可能となる.(フロントエンドとバックエンド)
2ステータス・プロトコルがありません。(stateless)
サーバはクライアントの状態を保持しません.サーバはクライアントを認識できず、ステータスを保持しません.これは、データを送信および受信するデータ要求が独立していることを意味します.すなわち、前のデータ要求は、次のデータ要求とは無関係である.
特長
-追加のセッション情報を管理する必要はありません.
-クライアント要求が急に増加しても、大量のサーバが必要になる場合があります.
-ステータスなしで応答サーバを簡単に変更できます.
-任意のサーバを任意に呼び出すことができます.
-水平拡張に有利です.
-1回の通信には多くのデータ量があります.
しかし、すべてのものが無償で設計できる可能性もあり、ない可能性もあります.
ex)
≪ステータスなし|No Status|ldap≫:ログイン・インタフェースの表示画面
≪ステータスの保持|Keep Status|ldap≫:サーバーのログイン状態を保持します.
リファレンス
-Cookieとセッションを使用してステータスを維持します.詳細については、HTTPヘッダセクション(サーバCookieはブラウザ、クライアント)を参照してください.
3非接続性
httpはクライアントとサーバが接続を確立した後、サーバの応答が完了し、すぐに接続を終了します.
Webの特性上、多くの人が同時にサービスを利用していますが、実際の処理の作業量は小さく、接続を維持し続けると大量のリソースが発生します.
=>これらのWebプロパティを考慮して、Httpはデフォルトで接続を維持しないモデルとして設計されています.
=>httpはサーバリソースを非常に効率的に使用します.
ex)検索操作
非接続性の限界を克服する
非永続接続HTTP
大量のリソース(HTML、JS、CSS、画像を含む)をダウンロードするたびに、接続/閉じる=>時間が必要です.
また、各リソースに新たなTCP/IP接続=>時間を追加する
HTTP接続の継続
TCP/IP接続を最初に維持し、クライアント/サーバが残りのリソースを要求/応答します.<=現在使用中
=>HTTP 2.0 3.0の最適化
HTTPメッセージ
スタートライン
リクエストメッセージstart-line=request-line
method SP request-target sp HTTP-version CRLF
方法:HTTP方法
request-target:絶対=path[?query]絶対パス[?クエリー]
HTTPバージョン:HTTPバージョン
SP: space
CRLF: enter
レスポンスメッセージstart-line=status-line
HTTP-version SP status-code SP reason-phrase CRLF
HTTPバージョン:HTTPバージョン
status-code:HTTP状態コード
reason-parrase:ステータスコードの記述文
見出し
header-field = field-name ":"OWS field-valu OWS
OWS:書き換え許可
ex)
Host: www.google.com
Content-Type: text/html;charset=UTF-8
ヘッダにはHTTP伝送に必要なすべての付加情報が含まれている
本体
実際に転送するデータ
HTTPメソッド
URI設計
=>uriリソースのみを識別
メソッド動作のみを識別
ex)
-リソースメンバー(名詞)
-変更動作の削除(動詞)
GETメソッド
リソースを問い合わせる.サーバに渡したいデータはquery(キュリー)で渡します.
メッセージ・ボディを使用してデータを転送できますが、サポートされていない場所が多いため、推奨されません.
注意:検索で使用し、セキュリティ保護を必要とせずに少量のデータを送信します.
POSTメソッド
要求データをサーバに転送します.サーバは、メッセージボディを介して受信したデータを処理します.多くの場合、データ変更、新しいリソース登録、プロセスなどのPOSTが使用されます.重要な部分は、データの作成、処理だけでなく、プロセスの処理にもあります.
ex)
1データ処理中にHTMLフォームに入力されたフィールドなどのデータブロックを提供する
スタートライン
リクエストメッセージstart-line=request-line
method SP request-target sp HTTP-version CRLF
方法:HTTP方法
request-target:絶対=path[?query]絶対パス[?クエリー]
HTTPバージョン:HTTPバージョン
SP: space
CRLF: enter
レスポンスメッセージstart-line=status-line
HTTP-version SP status-code SP reason-phrase CRLF
HTTPバージョン:HTTPバージョン
status-code:HTTP状態コード
reason-parrase:ステータスコードの記述文
見出し
header-field = field-name ":"OWS field-valu OWS
OWS:書き換え許可
ex)
Host: www.google.com
Content-Type: text/html;charset=UTF-8
ヘッダにはHTTP伝送に必要なすべての付加情報が含まれている
本体
実際に転送するデータ
HTTPメソッド
URI設計
=>uriリソースのみを識別
メソッド動作のみを識別
ex)
-リソースメンバー(名詞)
-変更動作の削除(動詞)
GETメソッド
リソースを問い合わせる.サーバに渡したいデータはquery(キュリー)で渡します.
メッセージ・ボディを使用してデータを転送できますが、サポートされていない場所が多いため、推奨されません.
注意:検索で使用し、セキュリティ保護を必要とせずに少量のデータを送信します.
POSTメソッド
要求データをサーバに転送します.サーバは、メッセージボディを介して受信したデータを処理します.多くの場合、データ変更、新しいリソース登録、プロセスなどのPOSTが使用されます.重要な部分は、データの作成、処理だけでなく、プロセスの処理にもあります.
ex)
1データ処理中にHTMLフォームに入力されたフィールドなどのデータブロックを提供する
2掲示板、ニュースグループ、メールリスト、ブログ、または類似のニュースグループにメッセージを公開
4既存のリソースへのデータの追加
他の方法で処理することもあります.
POST要求は資源固有の体系に従って処理する.
POST/members HTTP/1.1
このように送信すると、サーバは指定されたシナリオに従ってプロセスまたは登録に使用されます.
たとえば、会員登録をしたい場合は
/members =>/members/100
サーバは独自のシステムに基づいて新しいリソース(100など)を作成し、JSONなどのファイルを生成します.応答データをクライアントに送信します.
注意:セキュリティ保護が必要な場合、大量のデータを送信する場合
PUTメソッド
簡単に説明しますが、ctrl+vと同じです.リソースを完全に置き換えます.リソース置換、リソース再生成なし
POSTとは異なり、クライアントはリソースを識別する.クライアントは、リソースの場所を認識し、URIを指定します.
PUT/members/100 HTTP/1.1(POSTとは異なる)
「リソースの完全な代替」
リソースを変更するわけではありません.
/members/100 (기존)
{
"username": "park",
"age": 20
}
PUT /members/100 HTTP/1.1
/members/100 (전송)
{
"age": 50
}
/members/100 (대체)
{
"age": 50
}
PATCH法
リソースを変更したい場合は、PATCHを使用します.
DELETEメソッド
リソースを削除する場合は、DELETEを使用します.
HTTPメソッドの属性
安全
GETとHEAD呼び出しはリソースを変更しません
襟元
同じリクエストを複数回送信
同じユーザが同じ動作に対してべき乗などである
正しく実装されるGET、PUT、DELETEメソッドは、べき乗等性を持たなければならない.
POSTはべき乗等ではない.
キャッシュ機能
応答結果はリソースをキャッシュおよび使用できますか?
GET、HEAD、POST、PATCHキャッシュ
実際には、GETとHEADのみがキャッシュとして使用されます
POST、PATCHは本明細書にキャッシュされることを考慮すべきであるが、実施は容易ではない
HTTPメソッドの利用
クライアントからサーバへのデータ転送
クエリー・パラメータによる送信
-GET:主にソートフィルタ
メッセージ本体からのデータ転送
-POST PUT PATCH:会員オーダーリソース登録リソースの変更
HTML Formデータ転送
静的データ・クエリー
クライアントからサーバへのデータ転送
クエリー・パラメータによる送信
-GET:主にソートフィルタ
メッセージ本体からのデータ転送
-POST PUT PATCH:会員オーダーリソース登録リソースの変更
HTML Formデータ転送
静的データ・クエリー
常にリソースパスのみでクエリー
動的データ・クエリー
クエリパラメータクエリ
HTML Formによるデータ変更
Formフォームに従ってHTTPを生成して転送します.
主に会員の入金、商品の注文、データの変更を使用します
HTML =>
formでenctype=「multipart/form-data」を使用
HTTPヘッダ=>
Content-Typeプロパティはmultipart/form-dataです.boundar=--XXX(自動)
これは、所定のフォーマットで情報を符号化するためである.処理のためのサーバは、複数の部分メッセージを分離することによって、単一のファイルの情報を取得する
注意:HTML Form転送はGET、POSTのみサポート
HTTP APIの送信(Formを使用しない)
フォームなしで直接データを送信します.
-サーバからサーバへ
-アプリケーションクライアント
-Webクライアント
ex)Form転送ではなくHTMLでJavaスクリプトを使用して通信する(AJAX)
-POST、PUT、PATCH:メッセージ本体を通してデータを転送する
-GET:クエリー・パラメータへのデータ転送
コンテンツ-タイプ:主にアプリケーション/jsonに使用されます(実際には標準です).
リファレンス
持続/非持続接続
REST API
HTTP MDN
すべての開発者向けHTTPコース。
Reference
この問題について(HTTPプロトコル), 我々は、より多くの情報をここで見つけました https://velog.io/@fdsa09876/http-프로토콜テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol