初学Node(六)搭建一个简单的服务器
搭建一个简单的服务器
通过下面的代码可以搭建一个简单的服务器:
var http = require("http");
http.createServer(function(request,response){
response.writeHead(200,{"Content-Type":"text/plain"});
response.write("hello my first demo");
response.end();
}).listen("8080");
console.log("server start");
搭建一个简单的服务器需要依赖http模块,通过http.createServer()来生成一个服务器实例通过listen()来启动这个实例。
http.createServer()参数是一个函数,这个函数的两个参数分别为request和response,request记录着从前端到服务器的各种信息,response记录从服务器端到前端的各种信息。
request有三个重要的属性:request.url:表示请求的地址,request.method:表示请求的方式,request.headers:表示所有的请求头信息。
另外我们可以通过request.setEncoding()来设置请求的编码。
我们也可以通过on()来为request的事件来注册处理函数,request.on()有两个事件分别为data和end,data表示正在接收数据,end表示数据接收完成,我们从前台向服务器发送数据常用的方式就是get和post,对于get请求我们可以直接从url中提取出传输的数据,而post的数据一般是放在请求体中的此时我们就需要data这个事件来获取前台的发送数据,使用方式为:
var postData = "";
request.on("data",function(data){
postData +=data;
});
request.on("end",function(){
console.log(postData);
});
在开始的例子中response.writeHead用来设置http返回的头信息,write()的参数表示要写入的内容,end()用来将write()的内容写入到response对象中。
listen()函数表示启动当前的http实例,listen()函数可以接收两个参数,第一个参数表示要监听的端口,第二个参数表示要监听的地址,也就是只有请求地址符合listen()的设置,http.createServer()里面的函数才会执行,listen()的默认地址为localhost。
处理不同的请求
上面的例子对于所有的请求执行的操作都是一样的,在实际开发中这个情况是不存在,我们需要针对不同的URL来做不同的处理,此时我们就需要对request对象的url属性进行判断了:
var http = require("http");
var demo = http.createServer(function(request,response){
var path = request.url;
console.log(path);
switch(path){
case "/homepage":
response.writeHead(200,{"Content-Type":"text/plain"});
response.write("hello this is homepage");
response.end();
break;
case "/details":
response.writeHead(200,{"Content-Type":"text/plain"});
response.write("hello this is details");
response.end();
break;
default:
response.writeHead(404,{"Content-Type":"text/plain"});
response.write("sorry");
response.end();
break;
}
}).listen("8080");
console.log("server start");
返回一个html页面
上面的这些我们只是返回几个字而已,正常情况下我们返回的通常是一个完整的页面,如果我们在response.write()中拼一个html页面出来,就会很麻烦而且很容易出错,此时我们就可以利用fs模块来简化这个操作:
var http = require("http");
var fs = require("fs");
var demo = http.createServer(function(request,response){
var path = request.url;
if(path=="/register"){
fs.readFile("register.html",function(err,data){
response.writeHead(200,{"Content-Type":"text/html; charset=utf-8"});
response.write(data);
response.end();
});
}else{
response.writeHead(200,{"Content-Type":"text/plain"});
response.write("hello node");
response.end();
}
}).listen("8080");
console.log("server start");
初学Node(六)搭建一个简单的服务器的更多相关文章
- 用nodejs搭建一个简单的服务器
使用nodejs搭建一个简单的服务器 nodejs优点:性能高(读写文件) 数据操作能力强 官网:www.nodejs.org 验证是否安装成功:cmd命令行中输入node -v 如果显示版本号表示安 ...
- 【netty】(2)---搭建一个简单服务器
netty(2)---搭建一个简单服务器 说明:本篇博客是基于学习慕课网有关视频教学.效果:当用户访问:localhost:8088 后 服务器返回 "hello netty"; ...
- 利用 nodeJS 搭建一个简单的Web服务器(转)
下面的代码演示如何利用 nodeJS 搭建一个简单的Web服务器: 1. 文件 WebServer.js: //-------------------------------------------- ...
- 使用gitblit搭建一个简单的局域网服务器
使用gitblit搭建一个简单的局域网服务器 1.使用背景 现在很多使用github管理代码,但是github需要互联网的支持,而且私有的git库需要收费.有一些项目的代码不能外泄,所以,搭建一个局域 ...
- Golang学习-第二篇 搭建一个简单的Go Web服务器
序言 由于本人一直从事Web服务器端的程序开发,所以在学习Golang也想从Web这里开始学起,如果对Golang还不太清楚怎么搭建环境的朋友们可以参考我的上一篇文章 Golang的简单介绍及Wind ...
- Prism for WPF 搭建一个简单的模块化开发框架(六)隐藏菜单、导航
原文:Prism for WPF 搭建一个简单的模块化开发框架(六)隐藏菜单.导航 这个实际上是在聊天之前做的,一起写了,也不分先后了 看一下效果图,上面是模块主导航,左侧是模块内菜单,现在加一下隐藏 ...
- 学习用node.js建立一个简单的web服务器
一.建立简单的Web服务器涉及到Node.js的一些基本知识点: 1.请求模块 在Node.js中,系统提供了许多有用的模块(当然你也可以用JavaScript编写自己的模块,以后的章节我们将详细讲解 ...
- Node学习(二) --使用http和fs模块实现一个简单的服务器
1.创建一个www目录,存储静态文件1.html.1.jpg. * html文件内容如下: 12345678910111213 <html lang="en">< ...
- 轻松创建nodejs服务器(1):一个简单nodejs服务器例子
这篇文章主要介绍了一个简单nodejs服务器例子,本文实现了一个简单的hello world例子,并展示如何运行这个服务器,需要的朋友可以参考下 我们先来实现一个简单的例子,hello world ...
随机推荐
- 电商O2O-11种最佳运营模式
免费模式,是在这种矛盾下应运而生的新型模式.免费模式在未来的几年中,将会不断的渗透到各个行业中,这不单单是加速了行业内部的洗牌速度,更是加速了行业之间的洗牌速度. 未来,免费模式会让行业之间的界限变得 ...
- EFW框架源代码版本升级记录说明
回<[开源]EFW框架系列文章索引> EFW框架源代码下载V1.3:http://pan.baidu.com/s/1c0dADO0 EFW框架实例源代码下载:http://p ...
- eclipse项目导入androidstudio
1.添加build.gradle buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tool ...
- Maven更新子模块的版本号
mark! 已写成了另一篇,不要打我.
- mysql ODBC connector相关问题
mysql ODBC connector我安装了,怎么就不成功了 进到命令行,运行下边的:C:\>cd \windows\SysWOW64 C:\Windows\SysWOW64>odbc ...
- Ubuntu 12.10
上海交通大学更新服务器(教育网千兆接入,联通/电信线路情况不详),包含其他开源镜像: deb http://ftp.sjtu.edu.cn/ubuntu/ quantal main multivers ...
- mysql中int、bigint、smallint 和 tinyint的区别详细介绍
1 bytes = 8 bit ,一个字节最多可以代表的数据长度是2的8次方 11111111 在计算机中也就是 -128到127 1.BIT[M] 位字段类型,M表示每个值的位数,范围从1到64,如 ...
- CSS实例
CSS 实例 CSS背景 设置页面的背景颜色 设置不同元素的背景颜色 设置一个图像作为页面的背景 错误的的背景图片 如何在水平方向重复背景图像 如何定位背景图像 一个固定的背景图片(这个图片不会随页面 ...
- (转)offsetof与container_of宏[总结]
1.前言 今天在看代码时,遇到offsetof和container_of两个宏,觉得很有意思,功能很强大.offsetof是用来判断结构体中成员的偏移位置,container_of宏用来根据成员的地址 ...
- Lua面向对象设计
首先对于Lua语言,它没有打算被用来进行大型的程序设计,相反,Lua目标定于小型到中型的程序设计,通常是作为大型系统的一部分,所以它只提供了一套精简的元素,很多高级语言的概念都没有.这样Lua就成为了 ...