Node fs, url, http 组合小型的服务器 ( 满足html请求, get, post 传值 )
<script type="text/javascript">
/*
* 引入模块
*/
var http = require('http');
var url = require('url');
var fs = require('fs'); /*
* 获取项目根路径(存放 WEB 项目的根目录)
*/
var rootPath = global.__dirname + '/Node'; /*
* 创建web服务器对象 createServer
* http.createServer(callback(){}): 创建服务器
* callback("客户端请求对象", "服务器响应对象"): 响应服务器请求的回调函数
*/
var server = http.createServer(function(request, response) {
if(request.method.toUpperCase() == 'GET'){
var pathUrl = url.parse(request.url);
if(pathUrl.pathname == '/'){
pathUrl.pathname = "/index.html";
}
returnHtml(rootPath + pathUrl.pathname, request, response);
/*
* 获取get传值的方法
* querystring.parse("需要解析的字符串"), NE.JS不支持;
*/
console.log(returnFlied(pathUrl.query));
} else {
/*
* 获取 POST 请求
* request.on('data', callback(读取到的数据){}): 读取缓冲区数据的事件
* request.on('end', callback(){}): 打他事件结束后执行的事件
*/
var postStr = '';
request.on('data', function(data){
postStr += data;
});
request.on('end', function(){
console.log(returnFlied(postStr));
});
}
}); /*
* 启动服务器的方法 listen ( 服务器响应事件要放在这句代码之前 )
* server.listen("端口号", "ip或域名"):
*/
server.listen(80, '192.168.3.143'); /*
* 根据请求读取文件的方法
*/
function returnHtml(path, request, response) {
fs.readFile(path, function(err, data){
response.setHeader("content-type", 'text/html');
if(err){
response.end("<h1>404 你访问的页面不存在</h1>");
}
else{
response.end(data);
}
});
} /*
* 解析 GET 和 POST 请求的方法
* 自己写的
*/
function returnFlied(str){
var json = {};
var atr = str.split('&');
for(var i = 0; i < atr.length; i++){
var keyVal = atr[i].split('=');
json[keyVal[0]] = keyVal[1];
}
return json;
}
</script>
Node fs, url, http 组合小型的服务器 ( 满足html请求, get, post 传值 )的更多相关文章
- Node学习(二) --使用http和fs模块实现一个简单的服务器
1.创建一个www目录,存储静态文件1.html.1.jpg. * html文件内容如下: 12345678910111213 <html lang="en">< ...
- [转]用Node.js创建自签名的HTTPS服务器
用Node.js创建自签名的HTTPS服务器 创建自己的CA机构 创建服务器端证书 创建客户端证书 将证书打包 创建自己的CA机构 为CA生成私钥 openssl genrsa -out ca-key ...
- node.js中使用http模块创建服务器和客户端
node.js中的 http 模块提供了创建服务器和客户端的方法,http 全称是超文本传输协议,基于 tcp 之上,属于应用层协议. 一.创建http服务器 const http = require ...
- 小型Http服务器
HTTP又叫做超文本传输协议,现如今用的最多的版本是1.1版本.HTTP有如下的特点: 支持客户/服务器模式(C/S或B/S) 简单快速:基于请求和响应,请求只需传送请求方法和请求路径 灵活:HTTP ...
- Node.js创建自签名的HTTPS服务器
https://cnodejs.org/topic/54745ac22804a0997d38b32d 用Node.js创建自签名的HTTPS服务器 发布于 4 年前 作者 eeandrew 6 ...
- node.js url模块
URL url.parse(urlStr[, parseQueryString][, slashesDenoteHost]) url.format(urlObj) url.resolve(from, ...
- cookie是指web浏览器存储的少量数据,该数据会在每次请求一个相关的URL时自动传到服务器中(转)
基本概念:cookie是指web浏览器存储的少量数据,该数据会在每次请求一个相关的URL时自动传到服务器中. 以博客园为例,我们看看cookie有哪些属性: 1.Name:cookie的名称: 2.V ...
- Node.js_express_浏览器存储技术 Cookie(服务器将少量数据交于浏览器存储管理)
浏览器存储技术 Cookie 服务器将少量数据交于浏览器存储管理 解决 http 无状态协议的问题(无法区分多次请求是否发送自同一客户端) 一个网页一般最多 20个的 cookie,每个 cookie ...
- 前端使用node.js的http-server开启一个本地服务器
前端使用node.js的http-server开启一个本地服务器 在写前端页面中,经常会在浏览器运行HTML页面,从本地文件夹中直接打开的一般都是file协议,当代码中存在http或https的链接时 ...
随机推荐
- B树就想到这个
比如要查找60 先在根结点中查,根结点里面有 17 35这2个关键字, 60 > 35,则从右边开始查找 p3指针开始查找 , 到了第二层的最右边的那个结点开始查找 , 里面有 65 8 ...
- streamsets rest api 转换 graphql
原理很简单,就是使用swagger api 生成schema 然后代理请求处理api 调用 参考项目 https://github.com/rongfengliang/streamsets-graph ...
- javabean(实体类)转Map类型
javabean(实体类)转Map类型 从网上"風亦飞"的导出EXCEL的源代码提取出来的.认为非常好用.分享一下给大家,主要看beanToMap方法就OK了 /*以下是从poi导 ...
- Windows nginx php cgi-fcgi 配置 xdebug
之前使用的是 Apache + PHP,不用怎么配置就可以. 由于服务器用的是 nginx,为了和服务器一致,所以本地开发也改为 nginx. 开始只是简单的开启 xdebug, 发现并不行. 找了一 ...
- 【转】【iOS】动态更换App图标
原文网址:http://www.cocoachina.com/ios/20170619/19557.html 前言 动态更换App图标这件事,在用户里总是存在需求的:有些用户喜欢“美化”自己的手机.至 ...
- 【转】每天一个linux命令(23):Linux 目录结构
原文网址:http://www.cnblogs.com/peida/archive/2012/11/21/2780075.html 对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是 ...
- python之 列表常用方法
更多列表的使用方法和API,请参考Python文档:http://docs.python.org/2/library/functions.html append:用于在列表末尾追加新对象: # app ...
- java中字符与字节的编码关系
在 GB 2312 编码或 GBK 编码中,一个英文字母字符存储需要1个字节,一个汉字字符存储需要2个字节. 在UTF-8编码中,一个英文字母字符存储需要1个字节,一个汉字字符储存需要3到4个字节. ...
- java 多线程之:join() 方法
join()介绍 join() 定义在java.lang.Thread中. join() 的作用:让"主线程"等待"子线程"结束之后才能继续运行.
- javascript的循环使用
学习网址: http://www.w3school.com.cn/js/js_loop_for.asp JavaScript 循环 如果您希望一遍又一遍地运行相同的代码,并且每次的值都不同,那么使用循 ...