ホームページ >ウェブフロントエンド >jsチュートリアル >HTTP モジュールを深く理解することができます。

HTTP モジュールを深く理解することができます。

青灯夜游
青灯夜游転載
2022-06-09 19:28:522252ブラウズ

この記事は、http モジュールについて学び、インターフェイスを作成するための基礎を築くのに役立ちます。お役に立てば幸いです。

HTTP モジュールを深く理解することができます。

#1. Web サーバー

Web サーバーとは何ですか?

アプリケーション (クライアント) は、特定のリソースが必要な場合、サーバーへの HTTP リクエストを通じてリソースを取得できます。リソースを提供するサーバーは Web サーバーです。

1.1 サーバーの初めての体験

HTTP モジュールを深く理解することができます。

##1.2 サーバーを作成する 2 つの方法

http.createServer はサーバー オブジェクトを返します
  • 最下位層は実際には直接の新しいサーバー オブジェクトを使用します

HTTP モジュールを深く理解することができます。

1.3 リクエスト オブジェクト

#リクエスト オブジェクトは、クライアントからサーバーに渡されるすべての情報をカプセル化します

    このリクエストの URL、サーバーは URL に応じて異なる方法で処理する必要があります;
  • このリクエストのリクエスト メソッド (GET で渡されるパラメータなど)および POST リクエストの処理方法は異なります;
  • このリクエストのヘッダーには、クライアント情報、データ受信形式、サポートされているエンコード形式などの情報も含まれます...
  • 一般リクエスト:

HTTP モジュールを深く理解することができます。

HTTP モジュールを深く理解することができます。##1.3.1 request-url

クライアントがリクエストを送信すると、さまざまなデータがリクエストされ、さまざまなリクエスト アドレスが渡されます。サーバーは、さまざまなリクエスト アドレスに基づいてさまざまな応答を行う必要があります。

ユーザーのリクエスト アドレスに追加のパラメーターも含まれている場合、それをどのように解析すればよいでしょうか?

url モジュールを使用できます。

その中で、url モジュールは URL の処理と解析のための実用的なツールを提供します

Import url const url = require('url')

リクエスト データが次のとおりであると仮定します。


コンソールによる URL の解析結果は次のとおりです。 HTTP モジュールを深く理解することができます。

パス名は、取得する必要がある最終パスです。私たちの目的は、クエリでユーザー名とパスワードを個別に取得することです。 HTTP モジュールを深く理解することができます。

Import querystring module

const qs = require('querystring');

const http = require("http")const url = require('url')const qs = require('querystring')// 1. 创建服务器const server = http.createServer((req, res) => {
  // 使用内置模块
  const{ pathname,query } = url.parse(req.url)
  if(pathname === '/login'){
    console.log(query);
    console.log(qs.parse(query));
    const { username, password } = qs.parse(query)
    console.log(username,password);
    res.end('请求结束')
  }});// 2. 设置端口号并启动服务器server.listen(8888,'0.0.0.0',()=>{
  console.log("服务器启动成功~");})
✅コンソール出力結果:

  • HTTP モジュールを深く理解することができます。#1.3.2 request-method
##Restful 仕様 (設計スタイル) では、データの追加、削除、変更、確認にさまざまなリクエスト メソッドを使用する必要があります:

GET: データのクエリ;

POST: 新しいデータの作成;

    PATCH: データの更新;
  • DELETE: データの削除
  • リクエストメソッドの違いを判断して、異なる処理を行うことができます。
  • 以下が本文内の JSON リクエスト データであると仮定します。> サーバーにユーザー名とパスワードを取得させるにはどうすればよいでしょうか?


HTTP モジュールを深く理解することができます。##✅コンソール出力

HTTP モジュールを深く理解することができます。

  • 1.3.2 request-headers
    HTTP モジュールを深く理解することができます。

##content-type は、このリクエストで伝送されるデータのタイプです:

HTTP モジュールを深く理解することができます。application/ json は json 型を意味します;

text/plain はテキスト型を意味します; application/xml は XML 型を意味します;

    multipart/form-data ファイルのアップロードを示します。
  • **content-length: **ファイルのサイズと長さ
  • keep-alive:
    • http は TCP プロトコルに基づいていますが、通常、リクエストと応答の直後に中断されます;
    • http1.0 では、接続を維持し続けたい場合: ①ブラウザには次の要求があります。要求ヘッダーに接続を追加: keep-alive; ② サーバーは応答ヘッダーに接続: key-alive を追加する必要があります; ③ クライアントが再度要求を行うと、同じ接続が使用され、直接の当事者が接続を中断します。 connection;
    • http1.1 では、すべての接続はデフォルトで connection: keep-alive になります: ① Web サーバーが異なればキープアライブ時間も異なります; ② Node のデフォルトは 5 秒です
    # **accept-encoding: **クライアントがサポートしているファイル圧縮形式をサーバーに通知します。たとえば、js ファイルは .gz ファイルに対応する gzip を使用してエンコードできます

    **accept: **クライアントが受け入れ可能であることをサーバーに通知します ファイル形式タイプ;

    ##**user-agent: **クライアント関連情報;

    1.4 応答オブジェクト

    1.4.1 応答-応答オブジェクト

    クライアントに結果データで応答したい場合は、次の 2 つの方法で応答できます。

    Write メソッド: このメソッドはデータを直接書き込みますが、ストリームは閉じません;

      end メソッド: このメソッドは最後のデータを書き込み、書き込み後にストリームは閉じられます;
    • 注: end と close を呼び出さない場合、クライアントは結果を待ちます。
    #1.4.2 応答-応答コード

    HTTP ステータス コード (HTTP ステータス コード) は、HTTP 応答ステータスを表すために使用される数値コードです。

    HTTP ステータス コードは非常に多く、さまざまな状況に応じてさまざまなステータス コードがクライアントに返されます。

    一般的なステータス コードは次のとおりです (ステータス コードは後続のプロジェクトでも使用されます) )
    • http ステータス コード コレクション
    ##カテゴリ#理由フレーズ情報 (情報ステータス コード)承認されたリクエストの処理リクエストは正常に処理されましたリクエストを完了するには追加のアクションが必要ですクライアント リクエスト エラー、サーバーはリクエストを処理できません#5xxサーバー エラーサーバーでリクエストの処理中にエラーが発生しました ##ステータス コード

    1xx
    2xx Success (成功ステータス コード)
    3xx リダイレクト
    4xx クライアント エラー
    一般的な応答コード:

    #説明ステータス#説明OK400不正なリクエストクライアント リクエストに構文エラーがあるため、サーバーは理解できません401Unauthorizedリクエストにはユーザー認証が必要です403Forbiddenサーバーはクライアントからのリクエストを理解しましたが、リクエストの実行を拒否しました 404Not Foundサーバーは、クライアントのリクエストに基づくリソース (Web ページ)。このコードを通じて、Web サイト デザイナーは、「要求したリソースが見つかりません」#500内部サーバー エラー 用のパーソナライズされたページを設定できます。サーバー内部エラー、リクエストを完了できませんサービスが利用できませんステータス コードを設定します:##1.4.3 応答-応答ヘッダー
    ##200リクエストは成功しました。通常、GET および POST リクエストに使用されます
    #503
    サーバーは、過負荷または過負荷のため、クライアントのリクエストを一時的に処理できません。システム・メンテナンス。遅延の長さはサーバーの Retry-After ヘッダー情報に含めることができます

    ヘッダー情報を返すには、主に 2 つの方法があります。 res.setHeader: 一度に 1 つのヘッダー情報を書き込みます; res.writeHead: ヘッダーとステータスを同時に書き込みます

    HTTP モジュールを深く理解することができます。
    HTTP モジュールを深く理解することができます。

    #More ノード関連の知識については、nodejs チュートリアル を参照してください。

以上がHTTP モジュールを深く理解することができます。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。