初学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 ...
随机推荐
- Java8简明教程(转载)
ImportNew注:有兴趣第一时间学习Java 8的Java开发者,欢迎围观<征集参与Java 8原创系列文章作者>. 以下是<Java 8简明教程>的正文. “Java并没 ...
- 从逆向的角度去理解C++虚函数表
很久没有写过文章了,自己一直是做C/C++开发的,我一直认为,作为一个C/C++程序员,如果能够好好学一下汇编和逆向分析,那么对于我们去理解C/C++将会有很大的帮助,因为程序中所有的奥秘都藏在汇编中 ...
- Auto CAD 2013的故障解决方法
一.问题的提出 Auto CAD 2013在使用过程中出现了错误:“安全系统(软件锁许可管理器) 不起作用或未正确安装.” 二.问题的分析 网络上很多地方转载了这么一个方法: 1) 启动Windows ...
- 使用docker搭建nfs实现容器间共享文件
首先介绍下今天的两个主角:nfs和docker nfs 是什么 NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TC ...
- Linux高级编程--08.线程概述
线程 有的时候,我们需要在一个基础中同时运行多个控制流程.例如:一个图形界面的下载软件,在处理下载任务的同时,还必须响应界面的对任务的停止,删除等控制操作.这个时候就需要用到线程来实现并发操作. 和信 ...
- ArcGIS地图打印设置
1.需求:客户自己开发的Engine程序,调用的是LayoutControl,需要连接大型绘图仪进行出图. 业务流程是先框选要打印的地图范围,该范围是自定义大小,框选完成之后进行预览,然后选择打印输出 ...
- bootstrap插件学习-bootstrap.button.js
先看bootstrap.button.js的结构 var Button = function ( element, options ){} //构造器 Button.prototype = {} // ...
- css居中学习笔记
css居中学习笔记 一.水平居中 以下面的代码为例: <body> <div class="parent"> <div class="chi ...
- 网狐6603棋牌游戏源码.rar
网狐6603棋牌游戏源码.rar http://pan.baidu.com/s/1dFgGNq5 网络收集仅供学习,下载后请务必在24小时内删除! 以上是原vc6.0源码,下载后使用vs2015编译, ...
- 重构第22天 分解方法(Break Method)
理解:如果一个功能,里面比较复杂,代码量比较多,我们就可以把这个功能分解成多个小的method,每个方法实现该功能的一个小小的部分,并且方法命名成容易理解,和方法内容相关的名称,更有助于维护和可读性提 ...