初学Node(六)搭建一个简单的服务器

搭建一个简单的服务器html

  经过下面的代码能够搭建一个简单的服务器:前端

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()来启动这个实例。node

  http.createServer()参数是一个函数,这个函数的两个参数分别为request和response,request记录着从前端到服务器的各类信息,response记录从服务器端到前端的各类信息。服务器

  request有三个重要的属性:request.url:表示请求的地址,request.method:表示请求的方式,request.headers:表示全部的请求头信息。函数

  另外咱们能够经过request.setEncoding()来设置请求的编码。post

  咱们也能够经过on()来为request的事件来注册处理函数,request.on()有两个事件分别为data和end,data表示正在接收数据,end表示数据接收完成,咱们从前台向服务器发送数据经常使用的方式就是get和post,对于get请求咱们能够直接从url中提取出传输的数据,而post的数据通常是放在请求体中的此时咱们就须要data这个事件来获取前台的发送数据,使用方式为:ui

var postData = "";
request.on("data",function(data){
    postData +=data;
});
request.on("end",function(){
    console.log(postData);
});

  在开始的例子中response.writeHead用来设置http返回的头信息,write()的参数表示要写入的内容,end()用来将write()的内容写入到response对象中。this

  listen()函数表示启动当前的http实例,listen()函数能够接收两个参数,第一个参数表示要监听的端口,第二个参数表示要监听的地址,也就是只有请求地址符合listen()的设置,http.createServer()里面的函数才会执行,listen()的默认地址为localhost。编码

处理不一样的请求url

  上面的例子对于全部的请求执行的操做都是同样的,在实际开发中这个状况是不存在,咱们须要针对不一样的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");
相关文章
相关标签/搜索