前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >node.js:简单的HTTP服务器

node.js:简单的HTTP服务器

作者头像
姓王者
发布2024-12-20 13:29:00
发布2024-12-20 13:29:00
11200
代码可运行
举报
文章被收录于专栏:姓王者的博客姓王者的博客
运行总次数:0
代码可运行

node.js:简单的HTTP服务器

有意思,实现文件访问了

引入需要的部分

代码语言:javascript
代码运行次数:0
复制
const http = require('http');
const fs = require('fs');
const path = require('path');

第一个http服务,第二个fs文件操作,第三个路径相关

第一步:创建http

代码语言:javascript
代码运行次数:0
复制
const server = http.createServer((req, res) => {

});

第二部:http回调函数

定义路径

在回调函数里面写功能 首先定义路径

代码语言:javascript
代码运行次数:0
复制
let url = new URL(req.url, `http://${req.headers.host}`);
let pathname = url.pathname;
let filePath = path.join(__dirname, pathname);
//可以加个log看一下路径是否正确,这会在服务器运行,路径访问时打印
// console.log('Request for:' , filePath);

读取文件

代码语言:javascript
代码运行次数:0
复制
fs.readFile(filePath, (err, data) => {
    if (err) {
      res.writeHead(404, {'Content-Type': 'text/plain'});
      res.end('Not found');
      return;
    } else {
      // 根据文件扩展名设置Content-Type
     // const ext = path.extname(filePath).toLowerCase();
      //const mimeTypes = {
        //'.html': 'text/html',
        //'.js': 'application/javascript',
        //'.css': 'text/css',
        // 其他文件类型...
       //现代浏览器的资源嗅探已经足够先进,因此对文件扩展名设置Content-Type并不是必要的
      //};
     // const contentType = mimeTypes[ext] || 'application/octet-stream';
     // res.writeHead(200, {'Content-Type': contentType});
      res.end(data);
    }
  })

设置端口,启动服务器

代码语言:javascript
代码运行次数:0
复制
server.listen(3000, () => {
  console.log('Server running at http://localhost:3000/');
});

完整代码

代码语言:javascript
代码运行次数:0
复制
const server = http.createServer((req, res) => {
// 使用req.url和req.headers.host来创建完整的URL对象
let url = new URL(req.url, `http://${req.headers.host}`);
let pathname = url.pathname;

// 构建文件系统路径
let filePath = path.join(__dirname, pathname);

console.log('Request for:', filePath);

fs.readFile(filePath, (err, data) => {
if (err) {
res.writeHead(404, {'Content-Type': 'text/plain'});
res.end('Not found');
return;
} else {
//   // 根据文件扩展名设置Content-Type
//   const ext = path.extname(filePath).toLowerCase();
//   const mimeTypes = {
//     '.html': 'text/html',
//     '.js': 'application/javascript',
//     '.css': 'text/css',
//     // 其他文件类型...
//  现代浏览器的资源嗅探已经足够先进,因此对文件扩展名设置Content-Type并不是必要的
//   };
//   const contentType = mimeTypes[ext] || 'application/octet-stream';
//   res.writeHead(200, {'Content-Type': contentType});
res.end(data);
}
});
});

server.listen(3000, () => {
console.log('Server running at http://localhost:3000/');
});

hello world

2024-12-11-175244
2024-12-11-175244
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024/12/11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • node.js:简单的HTTP服务器
    • 引入需要的部分
    • 第一步:创建http
    • 第二部:http回调函数
      • 定义路径
      • 读取文件
      • 设置端口,启动服务器
    • 完整代码
    • hello world
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档