构建web应用
var http = require('http');
http.createServer(function(req, res){
res.writeHeader(200, {Content-Type : 'text/plain'});
res.end('hello world!');
}).listen(80);
function(req, res){
var method = req.method;
if(method === 'POST'){
}else if(method === 'GET'){
}else if(method === 'DELETE'){
}else if(method === 'PUT'){
}else{
}
}
var url = require('url');
var fs = require('fs');
function(req, res){
var pathname = url.parse(req.url).pathname;
fs.readFile(path.join(ROOT, pathname), function(err, file){
if(err){
res.writeHeader(404);
res.end('not Found File');
return;
}
res.writeHeader(200);
res.end(file);
});
}
function(req, res){
var pathname = url.parse(req.url).pathname;
var paths = pathname.split('/');
var contronller = paths[1] || 'index';
var action = paths[2] || 'index';
var args = paths.slice(3);
if(handler[contronller] && handler[contronller][action]){
handler[contronller][action].apply(null, [req, res].concat(args));
}else{
res.writeHeader(500);
res.end('找不到响应控制器');
}
}
var url = require('url');
var query = url.parse(req.url, true).query;//{foo : 'aaa', baz : 'bbb'}
req.query = query;
handle(req, res);
function parseCookie(cookie){
var cookies = {};
if(!cookie){
return cookies;
}
var list = cookie.split(';');
for(var i = 0,len = list.length;i < len;i++){
var pair = list[i].split('=');
cookies[pair[0].trim()] = pair[1];
}
return cookies;
};
req.cookies = parseCookie(req.headers.cookie);
handle(req, res);
function serialize(name, value, options){
var pairs = [name+'='+value];
if(options.expires){
pairs.push('Expires='+options.expires.toUTCString());
}
if(options.maxAge){
pairs.push('Max-Age='+options.maxAge);
}
if(options.path){
pairs.push('Path='+options.path);
}
if(options.domain){
pairs.push('Domain='+options.domain);
}
if(options.httpOnly){
pairs.push('HTTPOnly');
}
if(options.secure){
pairs.push('Secure');
}
return pares.join(';');
}
res.writeHeader('Set-Cookie', serialize({isVisit : 1}));
var hasBody = function(req){
return 'transfer-encoding' in req.Headers || 'content-length' in req.Headers;
}
function(req, res){
if(hasBody(req)){
var buffers = [];
req.on('data', function(chunk){
buffers.push(chunk);
});
req.on('end', function(){
req.rawBody = Buffer.concat(buffers).toString();
handle(req, res);
});
}else{
handle(req, res);
}
};
req.body = querystring.parse(req.rawBody);
var mime = function(req){
return req.headers['content-type'].split(';')[0] || '';
}
var xml2js = require('xml2js');
var handle = function(req, res){
if(mime(req) === 'application/json'){
try{
req.body = JSON.parse(req.rowBody);
}catch(){
res.writeHeader('400');
res.end('invalid json');
return;
}
}
if(mime(req) === 'application/xml'){
xml2js.parseString(req,rawBody, function(err, xml){
if(err){
}else{
req.body = xml;
}
});
}
};
var formidable = require('formidable');
function(req, res){
if(hasBody(req)){
if(mime(req) === 'multipart/form-data'){
var form = new formidable.IncomingForm();
form.parse(req, function(err, fields, files){
req.body = fields;
req.files = files;
handle(req, res);
});
}
}
}
var bytes = 1024;
function(req, res){
var received = 0;
var len = req.headers['content-length']?parseInt(req.headers['content-length'], 10):null;
if(len > bytes){
res.writeHeader(413);
res.end;
return;
}
res.on('data', function(chunk){
received += chunk.length;
if(received > bytes){
req.destroy();
}
});
handle(req, res);
};
构建web应用的更多相关文章
- NodeJs+http+fs+request+cheerio 采集,保存数据,并在网页上展示(构建web服务器)
目的: 数据采集 写入本地文件备份 构建web服务器 将文件读取到网页中进行展示 目录结构: package.json文件中的内容与上一篇一样:NodeJs+Request+Cheerio 采集数据 ...
- 使用EXtjs6.2构建web项目
一.项目简介 众所周知ext是一款非常强大的表格控件,尤其是里边的grid为用户提供了非常多的功能,现在主流的还是用extjs4.0-4.2,但是更高一点的版本更加符合人的审美要求.因此,在今天咱们构 ...
- 《深入浅出Node.js》第8章 构建Web应用
@by Ruth92(转载请注明出处) 第8章 构建Web应用 一.基础功能 请求方法:GET.POST.HEAD.DELETE.PUT.CONNECT GET /path?foo=bar HTTP/ ...
- 基于MVC4+EasyUI的Web开发框架经验总结(2)- 使用EasyUI的树控件构建Web界面
最近花了不少时间在重构和进一步提炼我的Web开发框架上,力求在用户体验和界面设计方面,和Winform开发框架保持一致,而在Web上,我主要采用EasyUI的前端界面处理技术,走MVC的技术路线,在重 ...
- Eclipse中使用maven构建web项目中遇到的问题
构建过程参考: http://blog.csdn.net/smilevt/article/details/8215558/ http://www.cnblogs.com/dcba1112/archiv ...
- Node.js高级编程读书笔记 - 4 构建Web应用程序
Outline 5 构建Web应用程序 5.1 构建和使用HTTP中间件 5.2 用Express.js创建Web应用程序 5.3 使用Socket.IO创建通用的实时Web应用程序 5 构建Web应 ...
- 高效构建Web应用 教你玩转Play框架 http://www.anool.net/?p=577
Play 框架是一个完整的Web应用开发框架,覆盖了Web应用开发的各个方面.Play 框架在设计的时候借鉴了流行的 Ruby on Rails 和 Grails 等框架,又有自己独有的优势.使用 P ...
- threejs构建web三维视图入门教程
本文是一篇简单的webGL+threejs构建web三维视图的入门教程,你可以了解到利用threejs创建简单的三维图形,并且控制图形运动.若有不足,欢迎指出. 本文使用的框架是three.js gi ...
- axis2_1.6.2之构建web端和客户端 .
参考资料: http://blog.csdn.net/apei830/article/details/5448897 axis2的官网 http://axis.apache.org/axis2/jav ...
- 使用XFire+Spring构建Web Service(一)——helloWorld篇
转自:http://www.blogjava.net/amigoxie/archive/2007/09/26/148207.html原文出处:http://tech.it168.com/j/2007- ...
随机推荐
- Jquery学习理解 (课堂)
Jquary概述 3 1.Jquary简介 3 1.1什么是jquery 3 2.使用jquary 4 2.1浏览器如何解析HTML文件 4 2.2利用选择器定位节点 4 2.3调用方法操作节点 5 ...
- Cannot find module 'webpack/bin/config-yargs'
1.版本不兼容 npm install webpack-dev-server@1.15.0 -g
- C语言数据结构-循环队列的实现-初始化、销毁、清空、长度、队列头元素、插入、删除、显示操作
1.数据结构-循环队列的实现-C语言 #define MAXSIZE 100 //循环队列的存储结构 typedef struct { int* base; //基地址 int _front; //头 ...
- linux物理内存管理
1.为什么需要连续的物理内存: Linux内核管理物理内存是通过分页机制实现的,它将整个内存划分成无数个4k(在i386体系结构中)大小的页,从而分配和回收内存的基本单位便是内存页了.利用分页管理有助 ...
- [JavaScript]如何实现一个JS脚本能在browser和NodeJs里都是用
下面是一个Common的Solution 'use strict'; // Universal Module Definition (UMD) to support AMD, CommonJS/Nod ...
- 百度地图 api bug 解决.......
百度地图 遇到了一个默明奇妙的bug..... 调用后中心点 不再 point(标注的点上...)这是需要执行一次(仅一次) 当 地图 加载完后 执行(这个方法你每次改地图 都会执行...所以让他执 ...
- 利用SharePoint项目改造的Web项目问题——Windows身份验证
最近领导交给一个项目:改造现有的SharePoint项目.UI层是做好的,只需要把实现的所有接口方法重新实现一遍,改造成Web版的实现方式. 现在要做基于Windows身份认证的登陆: 配置IIS—— ...
- Codeforces-Salem and Sticks(枚举+思维)
Salem gave you nn sticks with integer positive lengths a1,a2,-,ana1,a2,-,an. For every stick, you ca ...
- 江西财经大学第一届程序设计竞赛 B
链接:https://www.nowcoder.com/acm/contest/115/B来源:牛客网 题目描述 给出一个出生日期,比如:1999-09-09, 问:从出生那一天开始起,到今天2018 ...
- CHUCK手把手带你搞定OPENSTACK
一.OpenStack初探 1.1 OpenStack简介 OpenStack是一整套开源软件项目的综合,它允许企业或服务提供者建立.运行自己的云计算和存储设施.Rackspace与NASA是最初重要 ...