Node原生封装HTTP与文件服务器
时间: 2024-01-16 18:05:35 浏览: 55
基于原生ajax与封装的ajax使用方法(详解)
使用Node原生的HTTP模块可以快速创建一个基本的HTTP服务器,示例代码如下:
```javascript
const http = require('http');
const fs = require('fs');
const server = http.createServer((req, res) => {
if (req.url === '/') {
res.writeHead(200, {'Content-Type': 'text/html'});
fs.readFile('./index.html', null, (err, data) => {
if (err) {
res.writeHead(404);
res.write('File not found!');
} else {
res.write(data);
}
res.end();
});
} else if (req.url === '/api/users') {
res.writeHead(200, {'Content-Type': 'application/json'});
const users = [{name: 'John', age: 30}, {name: 'Jane', age: 25}];
res.write(JSON.stringify(users));
res.end();
} else {
res.writeHead(404);
res.write('Page not found!');
res.end();
}
});
server.listen(3000, () => console.log('Server started on port 3000'));
```
上面的代码创建了一个简单的HTTP服务器,当用户访问根路径时,返回一个HTML文件,当用户访问`/api/users`路径时,返回JSON格式的用户列表。如果用户访问了其他路径,则返回404错误。
使用Node原生的`fs`模块可以快速创建一个基本的文件服务器,示例代码如下:
```javascript
const http = require('http');
const fs = require('fs');
const path = require('path');
const server = http.createServer((req, res) => {
const filePath = path.join(__dirname, 'public', req.url === '/' ? 'index.html' : req.url);
const extname = path.extname(filePath);
let contentType = 'text/html';
switch (extname) {
case '.js':
contentType = 'text/javascript';
break;
case '.css':
contentType = 'text/css';
break;
case '.json':
contentType = 'application/json';
break;
case '.png':
contentType = 'image/png';
break;
case '.jpg':
contentType = 'image/jpg';
break;
}
fs.readFile(filePath, (err, content) => {
if (err) {
if (err.code == 'ENOENT') {
// File not found
res.writeHead(404);
res.end('File not found!');
} else {
// Server error
res.writeHead(500);
res.end(`Server error: ${err.code}`);
}
} else {
// Success
res.writeHead(200, { 'Content-Type': contentType });
res.end(content);
}
});
});
server.listen(3000, () => console.log('Server started on port 3000'));
```
上面的代码创建了一个简单的文件服务器,当用户访问根路径时,返回一个HTML文件,当用户访问其他路径时,返回对应的文件。如果文件不存在,则返回404错误,如果出现其他错误,则返回500错误。
阅读全文