Heim  >  Artikel  >  Web-Frontend  >  Analyse des HTTP-Moduls von Nodejs

Analyse des HTTP-Moduls von Nodejs

不言
不言Original
2018-06-30 15:28:161303Durchsuche

Dieser Artikel stellt hauptsächlich die Analyse des HTTP-Moduls von Nodejs vor. Es hat einen gewissen Referenzwert. Jetzt können Freunde in Not darauf verweisen.

Wir wissen, dass der traditionelle HTTP-Server besteht aus Software wie Aphche, Nginx, IIS usw., Nodejs benötigt jedoch kein http-Modul, das zum Erstellen des Servers verwendet werden kann an Sie. Freunde, die es brauchen, können sich darauf beziehen Software wie Aphche, Nginx und IIS benötigt jedoch kein http-Modul, das zum Erstellen eines Servers verwendet werden kann >

Das http-Modul kapselt einen HTTP-Server und einen einfachen HTTP-Client: http.Server() wird verwendet, um einen ereignisbasierten HTTP-Server zu erstellen, und http.request() und http.get() können als Clients dafür dienen Anfragen an den HTTP-Server initiieren. Die hier verwendete Methode createServer() gibt ein http.Server-Objekt zurück, das bedeutet, dass der Browser eine solche Datei nicht verarbeitet, wenn er sie erhält. html. Wenn der Browser diese Art von Datei erhält, ruft er automatisch den HTML-Parser auf, um die Datei entsprechend zu verarbeiten. Darüber hinaus können Sie auch die neue Konstruktormethode http.Server() verwenden, um ein http.Server-Objekt zu erstellen, zum Beispiel:

var http = require("http");
http.createServer(function(req,res) {
 res.writeHead(200,{
  "content-type":"text/plain"
 });
 res.write("Hello NodeJs");
 res.end();
}).listen(3000);

Der obige Code lautet Erstellen Sie direkt ein HTTP-Serverobjekt und fügen Sie ihm dann einen Anforderungsereignis-Listener hinzu. Das mit der Methode createServer() erstellte http.Server-Objekt fügt standardmäßig einen Anforderungsereignis-Listener hinzu, dieser wird jedoch weggelassen.

Die Ereignisse von http.Server sind oben erwähnt. Das am häufigsten verwendete Ereignis von http.Server ist „request“, das ausgelöst wird, wenn eine http-Anfrage empfangen wird. Im „request“-Ereignis sind die an die Callback-Funktion übergebenen Parameter req und res Instanzen von http.IncomingMessage bzw. http.ServerResponse:

Die Klasse http.IncomingMessage enthält die vom Client gesendeten HTTP-Anforderungsinformationen kann verwendet werden, um auf den Antwortstatus, Nachrichtenkopfzeilen, Daten usw. zuzugreifen, zum Beispiel:

var http = require("http");
var server = new http.Server();
server.on("request",function(req,res) {
  ...
}).listen(3000);

http.ServerResponse-Klasse sind die Informationen, an die zurückgegeben wird Der Client verfügt über drei wichtige Methoden zum Zurückgeben von Antwortheadern, Antwortinhalten und zum Beenden der Anfrage:


writeHead(statusCode[, statusMessage][,headers]): Antwortheader an den anfordernden Client senden. Diese Funktion ist in Wird höchstens einmal in einer Anfrage aufgerufen. Wenn nicht, wird automatisch ein Antwortheader generiert

write(chunk[,encoding][,callback]): Antwortinhalt an den anfordernden Client senden, chunk ist ein buffer Oder ein String. Wenn der Block ein String ist, müssen Sie die Kodierungsmethode angeben. Der Standardwert ist utf-8. Sie können

end([data ][,encoding][,callback]) aufrufen. : Antwort beenden, die den Client darüber informiert, dass alle Sendungen beendet sind. Wenn diese Funktion nicht aufgerufen wird, befindet sich der Client immer im Wartezustand

Weitere Informationen zu anderen http.Server-Klassenereignissen finden Sie im offiziellen Dokument: http ://nodejs.cn/api/http.html

2. http-Client

http-Modul bietet http Die beiden Methoden .request( ) und http.get() fungieren als Client, um Anfragen an den http-Server zu initiieren.

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

Zum Beispiel:

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 等待连接的超时时间
Wenn während der Anfrage ein Fehler auftritt, dann wird das „error“-Ereignis im zurückgegebenen Anfrageobjekt ausgelöst;

Mit http.request() müssen Sie immer req.end() aufrufen, um das Ende der Anfrage anzuzeigen, auch wenn keine Daten geschrieben werden zum Körper

http.get(options[,callback])-Methode

Die http.get()-Methode ist eine vereinfachte Version der http.request()-Methode ist das http.get() automatisch Die Anforderungsmethode ist auf „GET“-Anfrage eingestellt und es besteht keine Notwendigkeit, req.end() manuell aufzurufen.

Das Obige ist hoffentlich der gesamte Inhalt dieses Artikels Es wird für das Lernen aller hilfreich sein. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website!

Verwandte Empfehlungen:

Einführung in die Verwendung des Request-Moduls in Node.js zur Verarbeitung von HTTP-Protokollanforderungen

Das Clustermodul in Node Learning

Das obige ist der detaillierte Inhalt vonAnalyse des HTTP-Moduls von Nodejs. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn