NodejsのHTTPモジュールの解析

Jun 30, 2018 pm 03:28 PM
nodejs モジュール

この記事では主に Nodejs の Http モジュールの分析を紹介します。これには特定の参考値がありますので、必要な方は参考にしてください。

従来の HTTP サーバーは Aphche、Nginx、およびIIS は同様のソフトウェアで構築されますが、Nodejs ではサーバーの構築に使用できる http モジュールが提供されています。必要な方は参考にしてください。 it

一、http サーバー

従来の HTTP サーバーは Aphche、Nginx、IIS などのソフトウェアによって構築されることはわかっていますが、Nodejs はそれを必要とせず、http モジュールを提供します。サーバーを単独で構築するために使用されます。例:

var http = require("http");
http.createServer(function(req,res) {
 res.writeHead(200,{
  "content-type":"text/plain"
 });
 res.write("Hello NodeJs");
 res.end();
}).listen(3000);
ログイン後にコピー

http モジュールは、HTTP サーバーと単純な HTTP クライアントをカプセル化します。 http.Server() はイベントベースの HTTP サーバーを作成するために使用され、http.request はイベントベースの HTTP サーバーを作成するために使用されます。 () および http.get( ) は、クライアントとして HTTP サーバーへのリクエストを開始できます。ここで使用される createServer() メソッドは、http.Server オブジェクトを返します。text/plain は、コンテンツが -type に設定されている場合、ファイルをプレーン テキスト形式に設定することを意味します。 html. ブラウザがこの種のファイルを取得すると、HTML パーサーを自動的に呼び出して、それに応じてファイルを処理します。さらに、新しい http.Server() コンストラクター メソッドを使用して http.Server オブジェクトを作成することもできます。例:

var http = require("http");
var server = new http.Server();
server.on("request",function(req,res) {
  ...
}).listen(3000);
ログイン後にコピー

上記のコードは http.Server オブジェクトを直接作成し、リクエスト イベントを追加します。それを聞く人。 createServer() メソッドを使用して作成された http.Server オブジェクトは、デフォルトでリクエスト イベント リスナーを追加しますが、これは省略されています。

http.Server のイベントについては上で説明しました。http.Server で最もよく使用されるイベントは、http リクエストを受信したときにトリガーされる「request」です。 「リクエスト」イベントでは、コールバック関数に渡されるパラメーター req と res は、それぞれ http.IncomingMessage と http.ServerResponse のインスタンスです。

http.IncomingMessage クラスには、クライアントから送信された http リクエスト情報が含まれており、これは Access で使用できます。応答ステータス、メッセージ ヘッダー、データ (例:

*headers/<object> - 请求头或响应头的对象
*httpVersion/<string> - http协议版本,可能的值有"1.1"或"1.0"
*method/<string> - 请求的方法,例如"GET"、"POST"等
*statusCode/<number> - http响应状态码
*statusMessage/<string> - http响应状态消息
*url/<string> - 发送http请求的客户端的url
ログイン後にコピー

http.ServerResponse クラス) は、クライアントに返される情報です。応答ヘッダー、応答コンテンツを返し、リクエストを終了するための 3 つの重要なメソッドがあります。 :

writeHead(statusCode[, statusMessage][,headers]): 要求元のクライアントに応答ヘッダーを送信します。この関数はリクエスト内で最大 1 回呼び出すことができます。呼び出されない場合は、応答ヘッダーが自動的に生成されます

write。 ( chunk[,encoding][,callback]): 応答コンテンツを要求元のクライアントに送信します。chunk が文字列の場合、デフォルトは utf-8 です。 () メソッドは

end([data][,encoding][,callback]) を呼び出す前に複数回呼び出すことができます。この関数が呼び出されない場合、クライアントは応答を終了し、すべての送信が終了したことを通知します。ステータス

その他の http.Server クラスのイベントについては、公式ドキュメントを参照してください: http://nodejs.cn/api/http.html

2. http クライアント http モジュールが提供するhttp.request() と http.get() の 2 つのメソッドの機能は、クライアントとして http サーバーへのリクエストを開始することです。

http.request(options[,callback])方法
http.request()方法返回一个http.ClientRequest的实例。其中,options是一个对象,表示请求的参数。包括:
*protocol/<string> - 使用的协议,默认为http
*host/<string> - 请求发送至的服务器的域名或 IP 地址,默认为"localhost"
*hostname/<string> - host的别名
*port/<number> - 远程服务器的端口号,默认为80
*method/<string> - 指定http请求方法,默认为"GET"
*path/<string> - 请求相对于根的路径,默认是"/",QueryString应该包含在其中。例如:/index.html?page=12
*headers/<object> - 包含请求头的对象
*timeout/<number> - 它设置了 socket 等待连接的超时时间
ログイン後にコピー

例:

var http = require("http");
var querystring = require("querystring");
var postData = querystring.stringify({
  "content":"测试一下",
  "mid":8837
});
var options = {
  hostname:"www.imooc.com",
  port:80,
  path:"/course/document",
  method:"POST",
  headers:{
    "Accept":"application/json, text/javascript, */*; q=0.01",
    "Accept-Encoding":"gzip, deflate",
    "Accept-Language":"zh-CN,zh;q=0.8",
    "Connection":"keep-alive",
    "Content-Length":postData.length,
    "Content-Type":"application/x-www-form-urlencoded; charset=UTF-8",
    "Cookie":"",
    "Host":"www.imooc.com",
    "Origin":"http://www.imooc.com",
    "Referer":"http://www.imooc.com/video/8837",
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2763.0 Safari/537.36",
    "X-Requested-With":"XMLHttpRequest",
  }
}
var req = http.request(options,function(res){
  res.on("data",function(chunk){
    console.log(chunk);
  });
  res.on("end",function(){
    console.log("完毕!");
  });
  console.log(res.statusCode);
});
req.on("error",function(err){
  console.log(err.message);
})
req.write(postData);
req.end();
ログイン後にコピー

リクエスト中にエラーが発生した場合、返されたリクエストオブジェクトで「error」イベントがトリガーされます。

http.request() を使用する必要があります。本体にデータが書き込まれていない場合でも、 req.end() を呼び出してリクエストの終了を示します

http.get(options[,callback]) メソッド


http.get() メソッドは、 http.request() メソッドのバージョンとの主な違いは、http.get() がリクエスト メソッドを自動的に「GET」リクエストに設定し、手動で req.end() を呼び出す必要がないことです

上記は全体ですこの記事の内容が皆さんの学習などに役立つことを願っています。その他の関連コンテンツについては、PHP 中国語 Web サイトに注目してください。

関連する推奨事項:

HTTP プロトコルリクエストを処理するための Node.js の Request モジュールの使用方法の概要


Node のクラスターモジュールについて学ぶ


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

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Nodejsとvuejsの違い Nodejsとvuejsの違い Apr 21, 2024 am 04:17 AM

Node.js はサーバー側の JavaScript ランタイムであり、Vue.js は対話型ユーザー インターフェイスを作成するためのクライアント側の JavaScript フレームワークです。 Node.js はバックエンド サービス API 開発やデータ処理などのサーバー側開発に使用され、Vue.js はシングルページ アプリケーションや応答性の高いユーザー インターフェイスなどのクライアント側開発に使用されます。

Nodejs はバックエンド フレームワークですか? Nodejs はバックエンド フレームワークですか? Apr 21, 2024 am 05:09 AM

Node.js は、高いパフォーマンス、スケーラビリティ、クロスプラットフォーム サポート、豊富なエコシステム、開発の容易さなどの機能を備えているため、バックエンド フレームワークとして使用できます。

Nodejsのグローバル変数とは何ですか Nodejsのグローバル変数とは何ですか Apr 21, 2024 am 04:54 AM

Node.js には次のグローバル変数が存在します。 グローバル オブジェクト: グローバル コア モジュール: プロセス、コンソール、require ランタイム環境変数: __dirname、__filename、__line、__column 定数: unknown、null、NaN、Infinity、-Infinity

Nodejsをmysqlデータベースに接続する方法 Nodejsをmysqlデータベースに接続する方法 Apr 21, 2024 am 06:13 AM

MySQL データベースに接続するには、次の手順に従う必要があります。 mysql2 ドライバーをインストールします。 mysql2.createConnection() を使用して、ホスト アドレス、ポート、ユーザー名、パスワード、データベース名を含む接続オブジェクトを作成します。 connection.query() を使用してクエリを実行します。最後に connection.end() を使用して接続を終了します。

Nodejs インストール ディレクトリ内の npm ファイルと npm.cmd ファイルの違いは何ですか? Nodejs インストール ディレクトリ内の npm ファイルと npm.cmd ファイルの違いは何ですか? Apr 21, 2024 am 05:18 AM

Node.js インストール ディレクトリには、npm と npm.cmd という 2 つの npm 関連ファイルがあります。違いは次のとおりです。拡張子が異なります。npm は実行可能ファイルで、npm.cmd はコマンド ウィンドウのショートカットです。 Windows ユーザー: npm.cmd はコマンド プロンプトから使用できますが、npm はコマンド ラインからのみ実行できます。互換性: npm.cmd は Windows システムに固有ですが、npm はクロスプラットフォームで使用できます。使用上の推奨事項: Windows ユーザーは npm.cmd を使用し、他のオペレーティング システムは npm を使用します。

Nodejs はバックエンド開発言語ですか? Nodejs はバックエンド開発言語ですか? Apr 21, 2024 am 05:09 AM

はい、Node.js はバックエンド開発言語です。これは、サーバー側のビジネス ロジックの処理、データベース接続の管理、API の提供などのバックエンド開発に使用されます。

Nodejsはフロントエンドを書くことができますか? Nodejsはフロントエンドを書くことができますか? Apr 21, 2024 am 05:00 AM

はい、Node.js はフロントエンド開発に使用でき、主な利点には、高性能、豊富なエコシステム、クロスプラットフォーム互換性が含まれます。考慮すべき点は、学習曲線、ツールのサポート、コミュニティの規模の小ささです。

NodejsとJavaの間に大きな違いはありますか? NodejsとJavaの間に大きな違いはありますか? Apr 21, 2024 am 06:12 AM

Node.js と Java の主な違いは、設計と機能です。 イベント駆動型とスレッド駆動型: Node.js はイベント駆動型で、Java はスレッド駆動型です。シングルスレッドとマルチスレッド: Node.js はシングルスレッドのイベント ループを使用し、Java はマルチスレッド アーキテクチャを使用します。ランタイム環境: Node.js は V8 JavaScript エンジン上で実行され、Java は JVM 上で実行されます。構文: Node.js は JavaScript 構文を使用し、Java は Java 構文を使用します。目的: Node.js は I/O 集中型のタスクに適しており、Java は大規模なエンタープライズ アプリケーションに適しています。

See all articles