📜  Node.js 中的不同服务器

📅  最后修改于: 2022-05-13 01:56:48.605000             🧑  作者: Mango

Node.js 中的不同服务器

Node.js 是一个开源和跨平台的运行时环境,用于在浏览器之外执行 JavaScript 代码。您需要记住 NodeJS 不是框架,也不是编程语言。大多数人感到困惑并理解它是一个框架或编程语言。我们经常使用 Node.js 来构建后端服务,例如 Web App 或 Mobile App 等 API。

有很多方法可以创建服务器,甚至 node.js 也有自己的内置服务器“http”。其中一些在下面提到:

1.使用' http '模块创建服务器:

导入http模块:导入http模块并将返回的 HTTP 实例存储到变量中。

句法:

var http = require("http");

创建和绑定服务器:使用createServer()方法创建服务器实例,并使用listen()方法将其绑定到某个端口。

句法:

const server = http.createServer().listen(port)

参数:此方法 (listen()) 接受如上所述和如下所述的单个参数:

  • port < Number >:端口在 1024 到 65535 的范围内,包含注册端口和动态端口。

下面的例子说明了在 Node.js 中http模块的使用。

示例:文件名:index.js

javascript
// Node.js program to create 
// http server 
  
// Using require to access http module 
const http = require("http");
  
// Port number
const PORT = process.env.PORT || 2020;
  
// Creating server
const server = http.createServer(
   // Server listening on port 2020
   function (req, res) {
      res.write('Hello geeksforgeeks!'); 
      // Write a response to the client
      res.end(); 
   }
)
.listen(PORT, error => {
  // Prints in console
  console.log(`Server listening on port ${PORT}`)
});


javascript
// Node.js program to create 
// https server 
  
// Using require to access https module 
var https = require('https');
var fs = require('fs');
const port= 8000;
  
var options = {
  
  // Note: We require SSL and certificate
  // to create https servers  
  key: fs.readFileSync('key.pem'),
  cert: fs.readFileSync('cert.pem')
};
  
https.createServer(options, function (req, res) {
  
  // Returns the status
  res.writeHead(200);
  res.end("Hello GeeksforGeeks");
}).listen(port);


javascript
// Node.js program to get the response  
// from https server 
  
// Using require to access http module 
const https = require('https');
  
// https://www.google.com/
https.get('https://www.geeksforgeeks.org/', (res) => {
  
  // Printing status code
  console.log('statusCode:', res.statusCode);
  
  // Printing headers
  console.log('headers:', res.headers);
  
}).on('error', (e) => {
  console.log(e);
});


javascript
// Node.js program to create server 
// with help of Express module
  
// Importing express 
const express = require('express');
  
// Creating new express app 
const app = express();
  
// PORT configuration
const PORT = process.env.PORT || 2020;
  
// IP configuration
const IP = process.env.IP || 2021;
  
// Create a route for the app
app.get('/', (req, res) => {
  res.send('Hello Vikas_g from geeksforgeeks!');
});
  
// Create a route for the app
app.get('*', (req, res) => {
  res.send('OOPS!! The link is broken...');
});
  
// Server listening to requests
app.listen(PORT, IP, () => {
  console.log(`The Server is running at: 
          http://localhost:${PORT}/`);
});


javascript
// Node.js program to create server
// using hapi module
  
// Importing hapi module
const Hapi = require('@hapi/hapi');
  
    // Creating Server
    const server = Hapi.server({
        port: 2020,
        host: 'localhost'
    });
  
    // Creating route
    server.route({
        method: 'GET',
        path: '/',
        handler: (request, hnd) => {
            return 'Hello GeeksForGeeks!';
        }
    });
  
const start = async () => {
  await server.start();
    console.log('Server running at', server.info.uri);
};
  
process.on('unhandledRejection', (err) => {
    console.log(err);
    process.exit(1);
});
  
start();


javascript
// Node.js program to create server 
// with help of Koa module
  
// Importing koa 
const koa = require('koa');
  
// Creating new koa app
const app = new koa();
  
// PORT configuration
const PORT = process.env.PORT || 2020;
  
// IP configuration
const IP = process.env.IP || 2021;
  
app.use(function *(){
  this.body = "Hello GeeksForGeeks!";
});
  
// Server listening to requests
app.listen(PORT, IP, ()=>{
    console.log("Server started at port", PORT);
});


使用以下命令运行index.js文件:

node index.js

输出:

现在在 Web 浏览器中输入http://127.0.0.1:2020/http://localhost:2020以查看输出。

2. 使用“ https ”模块创建服务器:

注意:为了创建HTTPS服务器,我们需要SSL 密钥和证书,以及内置的https Node.js 模块。

导入 https 模块:导入https模块并将返回的 HTTP 实例存储到变量中。

句法:

var https = require("https");

创建和绑定服务器:使用 createServer() 方法创建服务器实例,并使用 listen() 方法将其绑定到某个端口。

句法:

const server = https.createServer(options, 
            onResponseCallback).listen(port)

参数:此方法接受三个参数,如上所述,如下所述:

  • options < key, certi > :包括通过的key和证书。
  • onResponseCallback < Callback >:是一个回调函数,在createServer的响应中被调用。
  • port < Number > 端口在 1024 到 65535 的范围内,同时包含注册端口和动态端口。

下面的例子说明了在 Node.js 中https模块的使用。

示例:文件名:index.js

javascript

// Node.js program to create 
// https server 
  
// Using require to access https module 
var https = require('https');
var fs = require('fs');
const port= 8000;
  
var options = {
  
  // Note: We require SSL and certificate
  // to create https servers  
  key: fs.readFileSync('key.pem'),
  cert: fs.readFileSync('cert.pem')
};
  
https.createServer(options, function (req, res) {
  
  // Returns the status
  res.writeHead(200);
  res.end("Hello GeeksforGeeks");
}).listen(port);

使用以下命令运行index.js文件:

node index.js

输出:

现在服务器已设置并启动,我们可以通过以下方式获取文件:

curl -k https://localhost:8000

现在在 Web 浏览器中键入https://127.0.0.1:8000/https://localhost:8000以查看输出。

示例:文件名:index.js

javascript

// Node.js program to get the response  
// from https server 
  
// Using require to access http module 
const https = require('https');
  
// https://www.google.com/
https.get('https://www.geeksforgeeks.org/', (res) => {
  
  // Printing status code
  console.log('statusCode:', res.statusCode);
  
  // Printing headers
  console.log('headers:', res.headers);
  
}).on('error', (e) => {
  console.log(e);
});

使用以下命令运行index.js文件:

node index.js

输出:

3. 使用“Express”模块创建服务器:为了使用 express 模块,我们需要安装 NPM(Node Package Manager)和以下模块(在 cmd 上)。

// Creates package.json file
>> npm init

// Installs express module
>> npm install express --save   OR
>> npm i express -s 

导入 express 模块:导入 express 模块并将返回的实例存储到变量中。

句法:

var express = require("express");

创建服务器:上述语法调用“express()”函数并创建一个新的 express 应用程序,该应用程序存储在 app 变量中。

句法:

const app = express();   
// OR by Importing and creating express application
var express = require("express")(); 

发送和监听响应:它与客户端和服务器通信请求和响应。它需要 PORT< number > 和 IP< number > 进行通信。

app.listen(PORT, IP, Callback);

参数:此方法接受三个参数,如上所述,如下所述。

  • PORT < Number > 端口是通信的端点,有助于与客户端和服务器进行通信。
  • IP IP 代表主机或设备的 IPv4 或 IPv6 地址。
  • Callback < 函数 > 它接受一个函数。

下面的示例说明了 Node.js 中的Express.js模块。

示例:文件名:index.js

javascript

// Node.js program to create server 
// with help of Express module
  
// Importing express 
const express = require('express');
  
// Creating new express app 
const app = express();
  
// PORT configuration
const PORT = process.env.PORT || 2020;
  
// IP configuration
const IP = process.env.IP || 2021;
  
// Create a route for the app
app.get('/', (req, res) => {
  res.send('Hello Vikas_g from geeksforgeeks!');
});
  
// Create a route for the app
app.get('*', (req, res) => {
  res.send('OOPS!! The link is broken...');
});
  
// Server listening to requests
app.listen(PORT, IP, () => {
  console.log(`The Server is running at: 
          http://localhost:${PORT}/`);
});

使用以下命令运行index.js文件:

node index.js

输出:

现在在 Web 浏览器中输入http://127.0.0.1:2020/http://localhost:2020/以查看输出。

4. 使用“Hapi”模块创建服务器:为了使用hapi模块,我们需要安装 NPM(Node Package Manager)和以下模块(在 cmd 上)。

// creates package.json file
>> npm init 

// Installs hapi module
>> npm install @hapi/hapi --save 

导入 hapi 模块:导入 hapi 模块并将返回的实例存储到变量中。

句法:

var Hapi = require("@hapi/hapi");

创建服务器:上面的语法导入了“express()”模块,现在它创建了一个服务器。它与客户端和服务器通信请求和响应。它需要 PORT 和 host < 字符串> 进行通信。

句法:

const server = Hapi.server({port: 2020, host: 'localhost'});

参数:此方法接受三个参数,如上所述,如下所述。

  • PORT < Number > 端口是通信的端点,有助于与客户端和服务器进行通信。
  • HOST < String > 它是主机的名称。

下面的示例说明了 Node.js 中的Hapi模块。

示例:文件名:index.js

javascript

// Node.js program to create server
// using hapi module
  
// Importing hapi module
const Hapi = require('@hapi/hapi');
  
    // Creating Server
    const server = Hapi.server({
        port: 2020,
        host: 'localhost'
    });
  
    // Creating route
    server.route({
        method: 'GET',
        path: '/',
        handler: (request, hnd) => {
            return 'Hello GeeksForGeeks!';
        }
    });
  
const start = async () => {
  await server.start();
    console.log('Server running at', server.info.uri);
};
  
process.on('unhandledRejection', (err) => {
    console.log(err);
    process.exit(1);
});
  
start();

使用以下命令运行index.js文件:

node index.js

输出:

Server running at: http://localhost:2020

现在在 Web 浏览器中键入http://localhost:2020/以查看输出。

5.使用'Koa'模块创建服务器:为了使用Koa模块,我们需要安装NPM(Node Package Manager)和以下模块(在cmd上)。

// Creates package.json file
>> npm init 

// Installs express module
>> npm install koa --save  OR
>> npm i koa -s 

导入 express 模块:导入 koa 模块并将返回的实例存储到变量中。

句法:

// Importing koa module
var koa = require("koa"); 

创建服务器:上述语法导入 koa 模块并创建一个新的 koa 应用程序,该应用程序存储在 app 变量中。

句法:

// Creating koa application
const app = new koa();  

发送和监听响应:它与客户端和服务器通信请求和响应。它需要 PORT< number > 和 IP< number > 进行通信。

app.listen(PORT, IP, Callback);

参数:此方法接受三个参数,如上所述,如下所述。

  • PORT < Number > 端口是通信的端点,有助于与客户端和服务器进行通信。
  • IP < Number > IP 代表主机或设备的 IPv4 或 IPv6 地址。
  • Callback < 函数 > 它接受一个函数。

下面的示例说明了 Node.js 中的 Koa 模块。

示例:文件名:index.js

javascript

// Node.js program to create server 
// with help of Koa module
  
// Importing koa 
const koa = require('koa');
  
// Creating new koa app
const app = new koa();
  
// PORT configuration
const PORT = process.env.PORT || 2020;
  
// IP configuration
const IP = process.env.IP || 2021;
  
app.use(function *(){
  this.body = "Hello GeeksForGeeks!";
});
  
// Server listening to requests
app.listen(PORT, IP, ()=>{
    console.log("Server started at port", PORT);
});

使用以下命令运行index.js文件:

node index.js

输出:

现在在 Web 浏览器中输入http://127.0.0.1:2020/http://localhost:2020/以查看输出。