搭建一个简单的服务器

  通过下面的代码可以搭建一个简单的服务器:

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(六)搭建一个简单的服务器的更多相关文章

  1. 用nodejs搭建一个简单的服务器

    使用nodejs搭建一个简单的服务器 nodejs优点:性能高(读写文件) 数据操作能力强 官网:www.nodejs.org 验证是否安装成功:cmd命令行中输入node -v 如果显示版本号表示安 ...

  2. 【netty】(2)---搭建一个简单服务器

    netty(2)---搭建一个简单服务器 说明:本篇博客是基于学习慕课网有关视频教学.效果:当用户访问:localhost:8088 后 服务器返回 "hello netty"; ...

  3. 利用 nodeJS 搭建一个简单的Web服务器(转)

    下面的代码演示如何利用 nodeJS 搭建一个简单的Web服务器: 1. 文件 WebServer.js: //-------------------------------------------- ...

  4. 使用gitblit搭建一个简单的局域网服务器

    使用gitblit搭建一个简单的局域网服务器 1.使用背景 现在很多使用github管理代码,但是github需要互联网的支持,而且私有的git库需要收费.有一些项目的代码不能外泄,所以,搭建一个局域 ...

  5. Golang学习-第二篇 搭建一个简单的Go Web服务器

    序言 由于本人一直从事Web服务器端的程序开发,所以在学习Golang也想从Web这里开始学起,如果对Golang还不太清楚怎么搭建环境的朋友们可以参考我的上一篇文章 Golang的简单介绍及Wind ...

  6. Prism for WPF 搭建一个简单的模块化开发框架(六)隐藏菜单、导航

    原文:Prism for WPF 搭建一个简单的模块化开发框架(六)隐藏菜单.导航 这个实际上是在聊天之前做的,一起写了,也不分先后了 看一下效果图,上面是模块主导航,左侧是模块内菜单,现在加一下隐藏 ...

  7. 学习用node.js建立一个简单的web服务器

    一.建立简单的Web服务器涉及到Node.js的一些基本知识点: 1.请求模块 在Node.js中,系统提供了许多有用的模块(当然你也可以用JavaScript编写自己的模块,以后的章节我们将详细讲解 ...

  8. Node学习(二) --使用http和fs模块实现一个简单的服务器

    1.创建一个www目录,存储静态文件1.html.1.jpg. * html文件内容如下: 12345678910111213 <html lang="en">< ...

  9. 轻松创建nodejs服务器(1):一个简单nodejs服务器例子

    这篇文章主要介绍了一个简单nodejs服务器例子,本文实现了一个简单的hello world例子,并展示如何运行这个服务器,需要的朋友可以参考下   我们先来实现一个简单的例子,hello world ...

随机推荐

  1. 谈一下OOP的乱用现象

    很久很久以前写了两篇设计模式乱用的文章,最近心血来潮,突然想写篇OOP乱用. 最近在移植一个旧项目,接手过程很多嘈想吐,开一篇谈一下OOP的乱用. 大多数公司用MVC是为了解耦合,但是这套代码的MVC ...

  2. 再谈LRU双链表内存管理

    N年前我写了个双链表也发了博客,还添了代码.但是那个代码不但复杂,而且还有有问题的,一直懒得整理,放在空间误导别人.最近在写服务端,今天抽点空补一篇. 关于LRU网上随便搜,有过后端经验的人应该很多都 ...

  3. Linux 学习碎片

    1.登录远程机器: ssh 远程机器用户名@远程机器IP ssh root@192.168.1.101 2.不同机器之前拷贝文件 #拷贝本机单个文件到远程服务器 scp /home/user1/tb. ...

  4. js常见怪异

    1.隐式转换为布尔:"truthy"和"falsy" 当 JavaScript 需要一个布尔值时(例如:if 语句),任何值都可以被使用. 最终这些值将被转换为 ...

  5. 【百度地图学习-一】初始化以及TextOverlay

    一.百度地图的初始化 主要用到三个类: 1.BMapManager:使用地图sdk前需先初始化BMapManager.BMapManager是全局的,可为多个MapView共用,它需要地图模块创建前创 ...

  6. SimpleDateFormatter Java中的用法

    转载 http://www.cnblogs.com/jayzee/p/3171195.html 有一点需要补充的是,SimpleDateFormatter是有时制的 如果hh:mm,则选用的是12小时 ...

  7. Golang控制goroutine的启动与关闭

    最近在用golang做项目的时候,使用到了goroutine.在golang中启动协程非常方便,只需要加一个go关键字: go myfunc(){ //do something }() 但是对于一些长 ...

  8. com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 2 of 2-byte

    com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 2 of 2-byte ...

  9. android xmlns:tools用法

    一开始不明白,后来删掉这个属性之后发现会出现一个提示: pick preview layout from the "Fragment Layout" context menu 原来 ...

  10. 爬虫技术 -- 进阶学习(七)简单爬虫抓取示例(附c#代码)

    这是我的第一个爬虫代码...算是一份测试版的代码.大牛大神别喷... 通过给定一个初始的地址startPiont然后对网页进行捕捉,然后通过正则表达式对网址进行匹配. List<string&g ...