ホームページ >ウェブフロントエンド >jsチュートリアル >Node http モジュールの学習: 基本的な使用法についての話

Node http モジュールの学習: 基本的な使用法についての話

青灯夜游
青灯夜游転載
2023-02-03 18:32:482356ブラウズ

この記事では、Node.js http モジュールについて説明し、createServer メソッドと listen メソッドを紹介します。

Node http モジュールの学習: 基本的な使用法についての話

http モジュール

Node.js を使用して、主に組み込みの http モジュールに依存する Web サービスを作成します。古典的な Express.js および koa.js フレームワークはすべて、http モジュールをコアとしてさまざまな程度にカプセル化されています。

最も単純な Web サービスを作成するには、数行のコードのみが必要です。新しい index.js ファイルを作成し、次の内容を入力します:

// 1.导入 http 模块
const http = require('http');

// 2. 调用 createServer 方法创建服务
const server = http.createServer((request, response) => {
    // 3.响应给浏览器的内容
	response.end('Hello, World'); 
});

// 4.执行 listen 方法,启动服务
server.listen(3000, () => {
    console.log('服务器启动成功:http://localhost:3000')
})

次に、コマンド ライン ツールを開き、node コマンドを使用してファイルを実行します:

node index.js

コマンド ライン ツールは次のように出力します:

服务器启动成功:http://localhost:3000

次に、ブラウザを開いて http://localhost:3000 にアクセスすると、次の内容が表示されます:

Node http モジュールの学習: 基本的な使用法についての話

この時点で、Web サービスはわずか 6 行のコードで作成されます。 [関連チュートリアルの推奨事項: nodejs ビデオ チュートリアル プログラミング教育 ]

createServer メソッド

ご覧のとおり、Web を作成する中心的なメソッドは、サービスは createServer メソッドです。

これはコールバック関数を受け取り、コールバック パラメータは次の 2 つのパラメータを受け取ります。

  • request オブジェクト: HTTP リクエスト オブジェクトを表し、 にはクライアントのリクエストが含まれます。伝送される情報
  • response オブジェクト: HTTP 応答オブジェクトを表し、応答情報をクライアントに設定するために使用されます

このコールバック関数は処理ですhttp リクエスト、http レスポンスを設定する主な場所。したがって、Web サービスを作成するということは、実際にはこの関数でリクエストとレスポンスのコンテンツを常に処理することを意味します。これは、HTTP プロトコル自体に基づく リクエスト/レスポンス モデル によっても決定されます。もちろん、実際の開発では、そのような混在した方法で記述することはできませんが、非常に合理的なミドルウェアのメカニズムと階層化を備えたフレームワークを使用します。

リッスン メソッド

TCP プロトコルが HTTP プロトコルの基礎となるプロトコルであり、すべての HTTP 要求データが TCP を使用して送信されることは誰もが知っています。 HTTP リクエストを送信するには、最初に TCP 接続 を確立する必要があります。

Node で HTTP サービスを作成する場合も同じことが当てはまります。 createServer メソッドが実行されると、Server クラスのインスタンスが作成されます。Server クラスは、別の組み込みモジュール の # から継承します。 net ##Server クラスには、listen メソッドがあります。以下は、関係を理解するために関連する型宣言です。

// net 模块

class Server extends EventEmitter {
 
        /**
         * 启动服务器监听连接。此 Server 可以是 TCP 或 IPC 服务器,具体取决于它所监听的内容。
         */
        // 有若干重载,这是最常使用的一种方法
        listen(port?: number, hostname?: string, listeningListener?: () => void): this;
        listen(port?: number, listeningListener?: () => void): this;
}


// http 模块
import { Server as NetServer } from 'node:net';

function createServer<
        Request extends typeof IncomingMessage = typeof IncomingMessage,
        Response extends typeof ServerResponse = typeof ServerResponse,
    >(requestListener?: RequestListener<Request, Response>): Server<Request, Response>;
      
class Server<
        Request extends typeof IncomingMessage = typeof IncomingMessage,
        Response extends typeof ServerResponse = typeof ServerResponse,
    > extends NetServer {}

したがって、

createServer メソッドでサービスを作成した後、listen メソッドを呼び出してサービスを開始し、接続をリッスンしますこれには複数のオーバーロードがあります。最も一般的に使用されるのは、ポートをリッスンすることです。起動が成功したら、コールバック関数を実行します:

server.listen(3000, () => {
    console.log(&#39;服务器启动成功:http://localhost:3000&#39;)
})

サービスの起動に失敗した場合は、次のようになります。ポートが占有されている場合、エラーがコンソールに直接報告され、後続のコールバック関数は実行されなくなります。

他にあまり使用されない 2 つのオーバーロードを紹介します。

1 つはポート番号を指定しない

です。このとき、オペレーティング システムは使用可能なポート番号をランダムに割り当てます。サービスが正常に開始されたら、

server.address().port プロパティを通じて割り当てられたポート番号を取得できます:

server.listen(() => {
    const port = server.address().port
    console.log(port)
    console.log(&#39;服务器启动成功:http://localhost:&#39;, port)
})
試してみましょう:

1 つは、Node http モジュールの学習: 基本的な使用法についての話監視対象のホスト名を指定することです。

host が指定されていない場合、デフォルトは

0.0.0.0

(IPv4) または :: (IPv6) です。 はサポートします。 network のすべてのホストにアクセスします。 locolhost または

127.0.0.1

に設定すると、自分のホストからのみアクセスできます。 <pre class="brush:js;toolbar:false;">server.listen(3000, &amp;#39;localhost&amp;#39;, () =&gt; { console.log(&amp;#39;服务器启动成功:http://localhost:&amp;#39;, port) })</pre>概要

http

モジュールの基本的な使用法を紹介しました。主に

createServer

を使用してサービスを作成し、その後 を呼び出します。 listen サービスを開始して接続をリッスンするメソッド。 createServer コールバック関数は、特定のリクエストを処理するために受信されます。Web サービスの作成では、主にコールバック関数の 2 つのパラメーター、requestresponse を使用します。詳しくは後ほどご紹介します。 ノード関連の知識の詳細については、nodejs チュートリアル を参照してください。

以上がNode http モジュールの学習: 基本的な使用法についての話の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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