ホームページ ウェブフロントエンド フロントエンドQ&A Nodejs httpモジュールのメソッドとは何ですか

Nodejs httpモジュールのメソッドとは何ですか

Jan 25, 2022 pm 01:54 PM
httpモジュール nodejs

nodejs http モジュールのメソッドは次のとおりです: 1. createServer() (サーバー インスタンスを作成できます); 2. listen() (指定されたポートをリッスンするためにサーバーを起動します); 3. setHeader() ; 4. write(); 5. end(); 6. get(); 7. request() など。

Nodejs httpモジュールのメソッドとは何ですか

#このチュートリアルの動作環境: Windows7 システム、nodejs バージョン 12.19.0、DELL G3 コンピューター。

http モジュール

1 基本的な使用法

1.1 モジュールのプロパティ

1.1 .1 HTTP リクエストの属性

  • headers: HTTP リクエストのヘッダー。

  • #url: 要求されたパス。

1.2 モジュール メソッド

1.2.1 http モジュール メソッド

createServer(callback) :サーバーインスタンスを作成します。

1.2.2 サーバー インスタンス メソッド

listen(port): サーバーを起動して、指定されたポートをリッスンします。

1.2.3 HTTPレスポンスメソッド

  • setHeader(key, value): HTTPヘッダ情報を指定します。

  • write(str): HTTP レスポンスの内容を指定します。

  • end(): HTTP レスポンスを送信します。

1.3 GET リクエストの処理

Http モジュールは主に HTTP サービスを構築するために使用されます。 Node.js を使用して HTTP サーバーを構築するのは非常に簡単です。

var http = require('http');

http.createServer(function (request, response){
  response.writeHead(200, {'Content-Type': 'text/plain'});
  response.end('Hello World\n');
}).listen(8080, "127.0.0.1");

console.log('Server running on port 8080.');
ログイン後にコピー

    上記のコードの最初の行
  • var http = require("http") は、http モジュールをロードすることを意味します
  • 次に、http モジュールを呼び出します
  • createServer メソッド、サーバー インスタンスを作成し、それを変数 http に割り当てます。
  • ceateServer メソッドは関数をパラメータとして受け入れます。関数の request パラメータは、クライアントの HTTP リクエストを表すオブジェクトです。
  • 応答パラメータも、サーバー側の HTTP 応答を表すオブジェクトです。
  • response.writeHead メソッドは、サーバーが HTTP ヘッダーで応答することを示し、response.end メソッドはサーバーの応答の特定の内容を示し、応答後に会話を閉じます。
  • 最後の
  • listen(8080) は、サーバー インスタンスを起動し、ローカル マシンの 8080 ポートをリッスンすることを意味します上記のコード行をファイル app.js に保存し、node を使用してこのファイルを呼び出すと、サーバーが実行を開始します。
  • $ node app.js
    ログイン後にコピー
この時点で、コマンド ライン ウィンドウに

「ポート 8080 で実行されているサーバー。」というプロンプトが 1 行表示されます。ブラウザを開いて http://localhost:8080 にアクセスすると、Web ページに "Hello world!" が表示されます。 上記はその場でWebページを生成する例ですが、あらかじめWebページを書いてファイルに保存し、fsモジュールでWebページのファイルを読み込んで返すこともできます。

var http = require('http');
var fs = require('fs');

http.createServer(function (request, response){
  fs.readFile('data.txt', function readData(err, data) {
    response.writeHead(200, {'Content-Type': 'text/plain'});
    response.end(data);
  });
}).listen(8080, "127.0.0.1");

console.log('Server running on port 8080.');
ログイン後にコピー

以下の修正は、異なる URL からのリクエストに応じて異なるコンテンツを表示するもので、Web サイトのプロトタイプを作成することに相当します。

var http = require("http");
http.createServer(function(req, res) {
  // 主页
  if (req.url == "/") {
    res.writeHead(200, { "Content-Type": "text/html" });
    res.end("Welcome to the homepage!");
  }
	// About页面
  else if (req.url == "/about") {
    res.writeHead(200, { "Content-Type": "text/html" });
    res.end("Welcome to the about page!");
  }
  // 404错误
  else {
    res.writeHead(404, { "Content-Type": "text/plain" });
    res.end("404 error! File not found.");
  }
}).listen(8080, "localhost");
ログイン後にコピー

コールバック関数のreq(リクエスト)オブジェクトは以下の属性を持ちます。

    url
  • : リクエストの URL
  • method
  • : HTTP リクエスト メソッド
  • headers# #注※:HTTPリクエストのすべてのHTTPヘッダ情報です。
  • 1.4 POST リクエストの処理

クライアントが POST

メソッドを使用してデータを送信すると、サーバーは

data を処理できます。 end の 2 つのイベントで、リスニング関数をセットアップします。

var http = require('http');

http.createServer(function (req, res) {
  var content = "";

  req.on('data', function (chunk) {
    content += chunk;
  });

  req.on('end', function () {
    res.writeHead(200, {"Content-Type": "text/plain"});
    res.write("You've sent: " + content);
    res.end();
  });

}).listen(8080);
ログイン後にコピー
data

データ受信処理中にデータを受信するたびにイベントがトリガーされ、受信したデータがコールバック関数に渡されます。

end イベントは、すべてのデータの受信が完了した後にトリガーされます。 上記のコードを少し変更することで、ファイルのアップロード関数を作成できます。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>&quot;use strict&quot;; var http = require(&amp;#39;http&amp;#39;); var fs = require(&amp;#39;fs&amp;#39;); var destinationFile, fileSize, uploadedBytes; http.createServer(function (request, response) { response.writeHead(200); destinationFile = fs.createWriteStream(&quot;destination.md&quot;); request.pipe(destinationFile); fileSize = request.headers[&amp;#39;content-length&amp;#39;]; uploadedBytes = 0; request.on(&amp;#39;data&amp;#39;, function (d) { uploadedBytes += d.length; var p = (uploadedBytes / fileSize) * 100; response.write(&quot;Uploading &quot; + parseInt(p, 0) + &quot; %\n&quot;); }); request.on(&amp;#39;end&amp;#39;, function () { response.end(&quot;File Upload Complete&quot;); }); }).listen(3030, function () { console.log(&quot;server started&quot;); });</pre><div class="contentsignin">ログイン後にコピー</div></div>
#2 リクエストを行う

#2.1 get()

##get メソッド

get リクエストを発行するために使用されます。

function getTestPersonaLoginCredentials(callback) {
  return http.get({
    host: &#39;personatestuser.org&#39;,
    path: &#39;/email&#39;
  }, function(response) {
    var body = &#39;&#39;;

    response.on(&#39;data&#39;, function(d) {
      body += d;
    });

    response.on(&#39;end&#39;, function() {
      var parsed = JSON.parse(body);
      callback({
        email: parsed.email,
        password: parsed.pass
      });
    });
  });
},
ログイン後にコピー

2.2 request()

request メソッドは、HTTP リクエスト
の発行に使用され、その使用形式は次のように。

http.request(options[, callback])
ログイン後にコピー

リクエスト メソッドのオプション パラメータには、オブジェクトまたは文字列を指定できます。これが文字列の場合は、これが URL であることを意味し、Node は内部で url.parse() を自動的に呼び出してこのパラメータを処理します。 オプション オブジェクト

は次のプロパティを設定できます

  • host:HTTP请求所发往的域名或者IP地址,默认是localhost
  • hostname:该属性会被url.parse()解析,优先级高于host。
  • port:远程服务器的端口,默认是80。
  • localAddress:本地网络接口。
  • socketPath:Unix网络套接字,格式为host:port或者socketPath。
  • method:指定HTTP请求的方法,格式为字符串,默认为GET。
  • path:指定HTTP请求的路径,默认为根路径(/)。可以在这个属性里面,指定查询字符串,比如/index.html?page=12。如果这个属性里面包含非法字符(比如空格),就会抛出一个错误。
  • headers:一个对象,包含了HTTP请求的头信息。
  • auth:一个代表HTTP基本认证的字符串user:password。
  • agent:控制缓存行为,如果HTTP请求使用了agent,则HTTP请求默认为Connection: keep-alive,它的可能值如下:
    • undefined(默认):对当前host和port,使用全局Agent。
    • Agent:一个对象,会传入agent属性。
    • false:不缓存连接,默认HTTP请求为Connection: close。
  • keepAlive:一个布尔值,表示是否保留socket供未来其他请求使用,默认等于false。
  • keepAliveMsecs:一个整数,当使用KeepAlive的时候,设置多久发送一个TCP KeepAlive包,使得连接不要被关闭。默认等于1000,只有keepAlive设为true的时候,该设置才有意义。
    request方法的callback参数是可选的,在response事件发生时触发,而且只触发一次。
    http.request()返回一个http.ClientRequest类的实例。它是一个可写数据流,如果你想通过POST方法发送一个文件,可以将文件写入这个ClientRequest对象
    下面是发送POST请求的一个例子。
var postData = querystring.stringify({
  &#39;msg&#39; : &#39;Hello World!&#39;
});

var options = {
  hostname: &#39;www.google.com&#39;,
  port: 80,
  path: &#39;/upload&#39;,
  method: &#39;POST&#39;,
  headers: {
    &#39;Content-Type&#39;: &#39;application/x-www-form-urlencoded&#39;,
    &#39;Content-Length&#39;: postData.length
  }
};

var req = http.request(options, function(res) {
  console.log(&#39;STATUS: &#39; + res.statusCode);
  console.log(&#39;HEADERS: &#39; + JSON.stringify(res.headers));
  res.setEncoding(&#39;utf8&#39;);
  res.on(&#39;data&#39;, function (chunk) {
    console.log(&#39;BODY: &#39; + chunk);
  });
});

req.on(&#39;error&#39;, function(e) {
  console.log(&#39;problem with request: &#39; + e.message);
});

// write data to request body
req.write(postData);
req.end();
ログイン後にコピー

注意,上面代码中,req.end()必须被调用,即使没有在请求体内写入任何数据,也必须调用。因为这表示已经完成HTTP请求
发送过程的任何错误(DNS错误、TCP错误、HTTP解析错误),都会在request对象上触发error事件

3 搭建HTTPs服务器

搭建HTTPs服务器需要有SSL证书。对于向公众提供服务的网站,SSL证书需要向证书颁发机构购买;对于自用的网站,可以自制。
自制SSL证书需要OpenSSL,具体命令如下。

openssl genrsa -out key.pem
openssl req -new -key key.pem -out csr.pem
openssl x509 -req -days 9999 -in csr.pem -signkey key.pem -out cert.pem
rm csr.pem
ログイン後にコピー

上面的命令生成两个文件:ert.pem(证书文件)key.pem(私钥文件)。有了这两个文件,就可以运行HTTPs服务器了。
Node.js提供一个https模块,专门用于处理加密访问。

var https = require(&#39;https&#39;);
var fs = require(&#39;fs&#39;);
var options = {
  key: fs.readFileSync(&#39;key.pem&#39;),
  cert: fs.readFileSync(&#39;cert.pem&#39;)
};

var a = https.createServer(options, function (req, res) {
  res.writeHead(200);
  res.end("hello world\n");
}).listen(8000);
ログイン後にコピー

上面代码显示,HTTPs服务器与HTTP服务器的最大区别,就是createServer方法多了一个options参数。运行以后,就可以测试是否能够正常访问。

curl -k https://localhost:8000
ログイン後にコピー

更多node相关知识,请访问:nodejs 教程

以上が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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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を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 04:54 AM

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

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 は大規模なエンタープライズ アプリケーションに適しています。

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

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

Nodejsプロジェクトをサーバーにデプロイする方法 Nodejsプロジェクトをサーバーにデプロイする方法 Apr 21, 2024 am 04:40 AM

Node.js プロジェクトのサーバー デプロイメント手順: デプロイメント環境を準備します。サーバー アクセスの取得、Node.js のインストール、Git リポジトリのセットアップ。アプリケーションをビルドする: npm run build を使用して、デプロイ可能なコードと依存関係を生成します。コードをサーバーにアップロードします: Git またはファイル転送プロトコル経由。依存関係をインストールする: サーバーに SSH で接続し、npm install を使用してアプリケーションの依存関係をインストールします。アプリケーションを開始します。node Index.js などのコマンドを使用してアプリケーションを開始するか、pm2 などのプロセス マネージャーを使用します。リバース プロキシの構成 (オプション): Nginx や Apache などのリバース プロキシを使用して、トラフィックをアプリケーションにルーティングします。

See all articles