概述
首先需要的Node 模块有 http,url,path,fs 模块。
// 提供一个http 服务
var http = require('http');
// 用于处理 url 字符串和 url对象
var url = require('url');
// 用于处理文件路径
var path = require('path');
// fs 模块 用于读取文件的
var fs = require('fs');
然后要用 http模块来创建一个http模块。
http.createServer(function(request,response){
//
})
当一个http 请求过来的时候,需要解析request.url 字段,利用url.parse()将request.url 字符串转义成url 对象。
var pathName = url.parse(request.url).pathname;
这里假设的是把js文件所在的目录作为静态服务器的地址。
var realName = path.join('.', pathName);
然获取到请求资源的文件类型
var ext = path.extname(pathName);
ext = ext ? ext.slice(1) : 'unknown';
然后判断文件是否存在,如果存在,则返回文件,否者返回404
// 判断文件是否存在。
fs.exists(realName, function (exists) {
})
如果不存在
if (!exists) {
response.writeHead(404, {'Context-type' : 'text/plain'});
response.write('this request url' + pathName + ' was not found on this server.');
response.end();
}
如果文件存在,则读取文件的二进制流
var requestType = {
"css" : "text/css",
"js" : "text/javascript",
"html":"text/html"
};
fs.readFile(realName, 'binary', function (err, file) {
if (err) {
response.writeHead(500, {'Context-type' : 'text/plain'});
response.end(err);
}
else {
var contentType = requestType[ext] || "text/plain";
response.writeHead(200, {'Context-type' : contentType});
response.write(file, 'binary');
response.end();
}
});
这样,一个简单的HTTP 静态资源服务器就写好了。
贴上项目地址:
bosscheng/simple-http-servergithub.com最后
以上就是迅速向日葵为你收集整理的404。服务器中未发现请求的 url。_从头编写一个 HTTP 静态资源服务器的全部内容,希望文章能够帮你解决404。服务器中未发现请求的 url。_从头编写一个 HTTP 静态资源服务器所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复