この記事では、Node.js http モジュールについて説明し、createServer メソッドと listen メソッドを紹介します。
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 にアクセスすると、次の内容が表示されます:
この時点で、Web サービスはわずか 6 行のコードで作成されます。 [関連チュートリアルの推奨事項: nodejs ビデオ チュートリアル 、プログラミング教育 ]
ご覧のとおり、Web を作成する中心的なメソッドは、サービスは createServer
メソッドです。
これはコールバック関数を受け取り、コールバック パラメータは次の 2 つのパラメータを受け取ります。
このコールバック関数は処理です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('服务器启动成功:http://localhost:3000') })
サービスの起動に失敗した場合は、次のようになります。ポートが占有されている場合、エラーがコンソールに直接報告され、後続のコールバック関数は実行されなくなります。
他にあまり使用されない 2 つのオーバーロードを紹介します。
1 つはポート番号を指定しない
です。このとき、オペレーティング システムは使用可能なポート番号をランダムに割り当てます。サービスが正常に開始されたら、server.address().port プロパティを通じて割り当てられたポート番号を取得できます:
server.listen(() => { const port = server.address().port console.log(port) console.log('服务器启动成功:http://localhost:', port) })
試してみましょう:
1 つは、監視対象のホスト名を指定することです。
host が指定されていない場合、デフォルトは
0.0.0.0 (IPv4) または ::
(IPv6) です。 はサポートします。 network
のすべてのホストにアクセスします。 locolhost または
に設定すると、自分のホストからのみアクセスできます。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:js;toolbar:false;">server.listen(3000, &#39;localhost&#39;, () => {
console.log(&#39;服务器启动成功:http://localhost:&#39;, port)
})</pre><div class="contentsignin">ログイン後にコピー</div></div>概要<code>
http
を使用してサービスを作成し、その後 を呼び出します。 listen
サービスを開始して接続をリッスンするメソッド。 createServer
コールバック関数は、特定のリクエストを処理するために受信されます。Web サービスの作成では、主にコールバック関数の 2 つのパラメーター、request
と response
を使用します。詳しくは後ほどご紹介します。 ノード関連の知識の詳細については、
nodejs チュートリアル
を参照してください。
以上がNode http モジュールの学習: 基本的な使用法についての話の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。