• 初学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");
  • 相关阅读:
    Broadcom BCM94352z/DW1560驱动新姿势
    amd显卡更新最新驱动鼠标顿卡的解决方法
    设置 P2415Q & P2715Q 显示器使其支持 HDMI 2.0 启用 4k@60hz
    Web基础之Redis
    前端基础之AJAX
    Java基础之枚举
    解决Tomcat在idea控制台乱码问题
    JQuery基础
    JavaScript基础笔记
    前端基础之Html、CSS
  • 原文地址:https://www.cnblogs.com/shinhwazt/p/6083853.html
Copyright © 2020-2023  润新知