我是靠谱客的博主 迅速向日葵,这篇文章主要介绍404。服务器中未发现请求的 url。_从头编写一个 HTTP 静态资源服务器,现在分享给大家,希望可以做个参考。

首先需要的Node 模块有 http,url,path,fs 模块。

复制代码
1
2
3
4
5
6
7
8
9
// 提供一个http 服务 var http = require('http'); // 用于处理 url 字符串和 url对象 var url = require('url'); // 用于处理文件路径 var path = require('path'); // fs 模块 用于读取文件的 var fs = require('fs');

然后要用 http模块来创建一个http模块。

复制代码
1
2
3
4
http.createServer(function(request,response){ // })

当一个http 请求过来的时候,需要解析request.url 字段,利用url.parse()将request.url 字符串转义成url 对象。

复制代码
1
2
var pathName = url.parse(request.url).pathname;

这里假设的是把js文件所在的目录作为静态服务器的地址。

复制代码
1
2
var realName = path.join('.', pathName);

然获取到请求资源的文件类型

复制代码
1
2
3
var ext = path.extname(pathName); ext = ext ? ext.slice(1) : 'unknown';

然后判断文件是否存在,如果存在,则返回文件,否者返回404

复制代码
1
2
3
4
5
// 判断文件是否存在。 fs.exists(realName, function (exists) { })

如果不存在

复制代码
1
2
3
4
5
6
if (!exists) { response.writeHead(404, {'Context-type' : 'text/plain'}); response.write('this request url' + pathName + ' was not found on this server.'); response.end(); }

如果文件存在,则读取文件的二进制流

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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-server​github.com
71509ac61e3ab8770891ac70b31776bb.png

最后

以上就是迅速向日葵最近收集整理的关于404。服务器中未发现请求的 url。_从头编写一个 HTTP 静态资源服务器的全部内容,更多相关404。服务器中未发现请求的内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(71)

评论列表共有 0 条评论

立即
投稿
返回
顶部