Heim >Web-Frontend >js-Tutorial >Eine kurze Diskussion über die Verwendung von Node.js zum Aufbau eines einfachen HTTP-Servers

Eine kurze Diskussion über die Verwendung von Node.js zum Aufbau eines einfachen HTTP-Servers

青灯夜游
青灯夜游nach vorne
2021-06-10 10:12:392277Durchsuche

Dieser Artikel richtet sich an alle, die Node.js zum Erstellen eines einfachen HTTP-Servers verwenden möchten, um zu versuchen, Computerressourcen zu manipulieren. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird für alle hilfreich sein.

Eine kurze Diskussion über die Verwendung von Node.js zum Aufbau eines einfachen HTTP-Servers

Was ist ein HTTP-Dienst?

Was ist das HTTP-Protokoll?

  • Hypertext Transfer Protocol, ein Protokoll der Anwendungsschicht, eine Konvention und Spezifikation zur Übertragung von Text, Bildern, Audio, Video und anderen Hypertextdaten zwischen zwei Punkten in der Computerwelt.

[Lernempfehlung: „nodejs-Tutorial“]

Eine Webseitenanforderung, die zwei HTTP-Paketaustausche enthält:

  • Der Browser sendet ein Anforderungs-HTTP-Paket an den HTTP-Server
  • Der HTTP-Server kehrt zurück der Browser Was macht der HTTP-Paket-Dienst? Schreiben Sie in einer http.js-Datei den folgenden Code:
  • // http 是 Node 自带的包,在这里加载引入
    const http = require('http')
    
    // 通过 http.createServer 创建一个 Web 静态服务器
    http.createServer(function (request, response) {
      // 监听到请求之后所做的操作
      // request 对象包含:用户请求报文的所有内容
      // 我们可以通过request对象,获取用户提交过来的数据
    
      // response 响应对象,用来响应一些数据
      // 当服务器想要向客户端响应数据的时候,就必须使用response对象
      response.writeHead(200);
      response.end('hello world');
    }).listen(4000, function () {
      // 通过 listen 监听端口,开启服务
      console.log("服务器已经启动,可通过以下地址:http://localhost:4000");
    })
Terminal-Ausführungsbefehl: node http.js

Eine kurze Diskussion über die Verwendung von Node.js zum Aufbau eines einfachen HTTP-Servers
  • Sie können sehen, dass der Dienst gestartet wurde. Öffnen Sie http in Chrome: //localhost:4000Eine kurze Diskussion über die Verwendung von Node.js zum Aufbau eines einfachen HTTP-Servers
  • Der Inhalt von response.end() wurde auf der Seite angezeigt und ein so einfacher HTTP-Server wurde implementiert.

    fs-Modul lädt statische Ressourcen

Erstellen Sie eine neue index.js-Datei:
// 加载模块
const http = require('http')
const fs = require('fs');

// 创建服务
http.createServer(function (request, response) {
  console.log(request.url);
  response.writeHead(200);
  response.end();
}).listen(3000)
Terminalausführung: node index.js, öffnen Sie den Browser localhost:3000

Eine kurze Diskussion über die Verwendung von Node.js zum Aufbau eines einfachen HTTP-Servershttp.js 文件,写入以下代码:

// 加载模块
const http = require('http')
const fs = require('fs');

// 创建服务
http.createServer(function (request, response) {
  // console.log(request.url);
  // 如果是图标请求则直接返回 200
  if (request.url == '/favicon.ico') {
    response.writeHead(200);
    response.end()
    return
  }

  response.writeHead(200);
  // fs 是文件模块,通过 createReadStream 可以读取本地文件,这里读取的是目录下的 index.html 文件
  // 通过 pipe 写入响应对象
  fs.createReadStream(__dirname + '/index.html').pipe(response)
}).listen(3000)

终端运行命令:node http.js

Eine kurze Diskussion über die Verwendung von Node.js zum Aufbau eines einfachen HTTP-Servers

可以看到,服务已经启动,在 Chrome 打开 http://localhost:4000

Eine kurze Diskussion über die Verwendung von Node.js zum Aufbau eines einfachen HTTP-Servers

页面上已经把 response.end() 的内容显示出来,这样一个简单的 HTTP 服务器就实现了。

fs 模块加载静态资源

新建一个 index.js 文件:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>实现一个简单的HTTP服务器</title>
</head>
<body>
  <div>hello HTTP服务</div>
</body>
</html>

终端运行:node index.js,浏览器打开 localhost:3000

Eine kurze Diskussion über die Verwendung von Node.js zum Aufbau eines einfachen HTTP-Servers

这里发送了两个请求,一个是当前url http://localhost:3000/的请求;另一个是右上角图标 http://localhost:3000/favicon.ico 的请求:

Eine kurze Diskussion über die Verwendung von Node.js zum Aufbau eines einfachen HTTP-Servers

那这里对 /favicon.ico 的请求做一些处理,直接返回 200 状态码即可;然后通过 fs 模块去处理 静态资源

rrreee

index.html 文件内容如下:

rrreee

终端运行:node index.js 启动服务:

Eine kurze Diskussion über die Verwendung von Node.js zum Aufbau eines einfachen HTTP-Servers

可以看到,这个 HTTP 服务器已经把计算机的静态资源 index.html 给到浏览器了。

这样一个简单的读取计算机静态资源的 HTTP 服务器就实现了!

在这个 HTTP 服务器中使用了 Node.js 内置的两个模块 httpfs

Hier werden zwei Anfragen gesendet, eine ist die aktuelle URL http://localhost:3000/ Anfrage; die andere ist die Anfrage für das Symbol in der oberen rechten Ecke http://localhost:3000/favicon.ico:

Eine kurze Diskussion über die Verwendung von Node.js zum Aufbau eines einfachen HTTP-Servers

Führen Sie dann eine Verarbeitung auf Anfrage von /favicon.ico durch. code> und geben Sie den Statuscode <code>200 direkt zurück. Verwenden Sie dann das Modul fs, um die statischen Ressourcen zu verarbeiten:

rrreee
index.html-Datei Der Inhalt ist wie folgt:

rrreeeTerminalbetrieb: node index.js Dienst starten:

Eine kurze Diskussion über die Verwendung von Node.js zum Aufbau eines einfachen HTTP-Servers🎜🎜Sie können sehen, dass dieser HTTP-Server die statische Ressource index des Computers angegeben hat .html an den Browser senden. 🎜🎜So ein einfacher HTTP-Server, der statische Computerressourcen liest, wurde implementiert! 🎜🎜Dieser HTTP-Server verwendet zwei integrierte Module von Node.js, http und fs. Es gibt viele andere Module in Node.js, die uns helfen können, leistungsstarke Funktionen zu erreichen . Module, und es sind diese Module, die das Node.js-Ökosystem leistungsfähiger machen. 🎜🎜🎜Der Code lautet wie folgt: 🎜🎜https://github.com/V-vincent/node-introduction🎜🎜🎜Weitere Programmierkenntnisse finden Sie unter: 🎜Programmiervideo🎜! ! 🎜

Das obige ist der detaillierte Inhalt vonEine kurze Diskussion über die Verwendung von Node.js zum Aufbau eines einfachen HTTP-Servers. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:juejin.cn. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen