如何创建一个简单的 Web 服务器,可以通过“readFile”函数读取给定磁盘上的给定文件?
要创建 Web 服务器,我们需要使用require()方法导入“http”模块,并使用 HTTP 模块的createServer()方法创建服务器。
句法:
const http = require('http')
const server = createServer(callback).listen(port,hostname);
现在在 createServer() 方法的回调中,我们需要从本地目录中读取文件并使用我们的服务器提供它。为此,我们需要导入“fs”模块并使用它的readFile()方法。
句法:
导入“fs”模块:
const fs = require('fs')
fs.readFile():
fs.readFile( filename, encoding, callback_function)
一旦我们完成读取文件,我们需要在我们的服务器上呈现它。
项目设置:创建文件serving_files.js并将其目录设置为终端中的当前目录。
示例 1:在此示例中,我们在代码中指定了文件名 serving_files.js,因此当我们在浏览器中运行http://localhost/时,我们的文件将被渲染。
serving_files.js
// Import http and fs
const fs=require('fs')
const http = require( 'http')
// Creating Server
http.createServer((req, res) =>{
// Reading file
fs.readFile(`serving_files.js`, function (err,filedata) {
if (err) {
// Handling error
res.writeHead(404);
res.end(JSON.stringify(err));
return;
}
// serving file to the server
res.writeHead(200);
res.end(filedata);
});
}).listen(80,'localhost');
serving_files.js
// Import http and fs
const fs=require('fs')
const http = require( 'http')
// Creating Server
http.createServer((req, res) =>{
// Reading file
fs.readFile(__dirname + req.url, function (err,filedata) {
if (err) {
// Handling error
res.writeHead(404);
res.end(JSON.stringify(err));
return;
}
// serving file to the server
res.writeHead(200);
res.end(filedata);
});
}).listen(80,'localhost');
运行应用程序的步骤:在终端中运行以下命令来启动服务器:
node serving_files.js
输出:
// Import http and fs
const fs=require('fs')
const http = require( 'http')
// Creating Server
http.createServer((req, res) =>{
// Reading file
fs.readFile(`serving_files.js`, function (err,filedata){
if (err) {
// Handling error
res.writeHead(404);
res.end(JSON.stringify(err));
return;
}
// serving file to the server
res.writeHead(200);
res.end(filedata);
});
}).listen(80,'localhost');
示例 2:在此示例中,我们将通过在请求 URL 中传递我们的文件名,而不是在我们的代码中指定文件名。因此,通过在请求 URL 中指定文件名,我们可以从服务器访问任何文件,并且我们将不仅限于检索一个文件。
因此,要从我们的服务器打开任何文件,我们需要通过以下方式传递我们的请求 URL:
http://hostname:port/file_name
在下面的示例中,我们的请求 URL 将是http://localhost/serving_files.js
serving_files.js
// Import http and fs
const fs=require('fs')
const http = require( 'http')
// Creating Server
http.createServer((req, res) =>{
// Reading file
fs.readFile(__dirname + req.url, function (err,filedata) {
if (err) {
// Handling error
res.writeHead(404);
res.end(JSON.stringify(err));
return;
}
// serving file to the server
res.writeHead(200);
res.end(filedata);
});
}).listen(80,'localhost');
运行应用程序的步骤:在终端中运行以下命令来启动服务器:
node serving_files.js
输出:
// Import http and fs
const fs=require('fs')
const http = require( 'http')
// Creating Server
http.createServer((req, res) =>{
// Reading file
fs.readFile(__dirname + req.url, function (err,filedata) {
if (err) {
// Handling error
res.writeHead(404);
res.end(JSON.stringify(err));
return;
}
// serving file to the server
res.writeHead(200);
res.end(filedata);
});
}).listen(80,'localhost');
注意:在上面的示例中,我们使用了端口 80,这是默认的 HTTP 端口。因此,即使我们没有在请求 URL 中指定端口,默认情况下也将其设为 80。
如果您使用任何其他端口号,请在您的请求 URL 中指定它。例如,如果您使用端口 8000,那么您的请求 URL 将是
http://localhost:8000/serving_files.js