下面是Node.js实现的静态服务器的攻略:
准备工作
在实现静态服务器之前,需要在本地先准备好一些资源,例如图片、html文件等。这些资源需要保存在一个文件夹中,并且需要记住该文件夹的路径,以便后续使用。
实现过程
第一步:导入依赖
在实现一个Node.js服务器时,需要导入http和fs(文件系统)模块。http模块用于开启服务器,fs模块用于读取文件。
const http = require('http');
const fs = require('fs');
第二步:开启服务器
创建一个http服务器,并监听在其中。
const server = http.createServer((req, res) => {
// 程序接收请求并响应内容
}
server.listen(3000, () => { // 服务器监听端口为 3000
console.log('Server running at http://localhost:3000');
});
第三步:程序接收请求并响应内容
在服务器接收到请求时,程序应该做出相应处理并返回相应内容。对于静态服务器,程序应该返回请求的文件内容。
const server = http.createServer((req, res) => {
const filePath = `.${req.url}`; // 获取文件路径
fs.readFile(filePath, (err, data) => { // 读取文件
if (err) { // 如果文件读取失败
res.writeHead(404, {'Content-Type': 'text/plain'}); // 返回响应码 404
res.write('404 Not Found'); // 返回响应内容
res.end(); // 结束响应
} else { // 如果文件读取成功
res.writeHead(200); // 返回响应码 200
res.write(data); // 返回响应内容
res.end(); // 结束响应
}
});
});
示例一:返回静态html页面
const server = http.createServer((req, res) => {
const filePath = `.${req.url}`; // 获取文件路径
if (req.url === '/index.html') { // 当请求的资源为 index.html 时
fs.readFile('./index.html', {encoding: 'utf-8'}, (err, data) => { // 读取index.html文件
res.writeHead(200, {'Content-Type': 'text/html'}); // 返回html响应头
res.write(data); // 返回html内容
res.end(); // 结束响应
});
} else { // 其他情况,返回404错误
res.writeHead(404, {'Content-Type': 'text/plain'}); // 返回响应码 404
res.write('404 Not Found'); // 返回响应内容
res.end(); // 结束响应
}
});
示例二:返回静态图片
const server = http.createServer((req, res) => {
const filePath = `.${req.url}`; // 获取文件路径
const imageTypes = ['.jpg', '.jpeg', '.png']; // 定义支持的图片类型
if (imageTypes.includes(filePath.slice(-4))) { // 当请求的资源为图片时
fs.readFile(filePath, (err, data) => { // 读取图片
if (err) { // 如果文件读取失败
res.writeHead(404, {'Content-Type': 'text/plain'}); // 返回响应码 404
res.write('404 Not Found'); // 返回响应内容
res.end(); // 结束响应
} else { // 如果文件读取成功
res.writeHead(200, {'Content-Type': `image/${filePath.slice(-3)}`}); // 返回响应头,使用slice获取图片类型
res.write(data); // 返回响应内容
res.end(); // 结束响应
}
});
} else { // 其他情况,返回404错误
res.writeHead(404, {'Content-Type': 'text/plain'}); // 返回响应码 404
res.write('404 Not Found'); // 返回响应内容
res.end(); // 结束响应
}
});
完整代码
const http = require('http');
const fs = require('fs');
const server = http.createServer((req, res) => {
const filePath = `.${req.url}`;
const imageTypes = ['.jpg', '.jpeg', '.png'];
if (imageTypes.includes(filePath.slice(-4))) {
fs.readFile(filePath, (err, data) => {
if (err) {
res.writeHead(404, {'Content-Type': 'text/plain'});
res.write('404 Not Found');
res.end();
} else {
res.writeHead(200, {'Content-Type': `image/${filePath.slice(-3)}`});
res.write(data);
res.end();
}
});
} else if (req.url === '/index.html') {
fs.readFile('./index.html', {encoding: 'utf-8'}, (err, data) => {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write(data);
res.end();
});
} else {
res.writeHead(404, {'Content-Type': 'text/plain'});
res.write('404 Not Found');
res.end();
}
});
server.listen(3000, () => {
console.log('Server running at http://localhost:3000');
});
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Nodejs实现的一个静态服务器实例 - Python技术站