初學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");

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM