初學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");
相關文章
相關標籤/搜索