美文网首页
NodeJs基础学习--http模块(5)

NodeJs基础学习--http模块(5)

作者: WanggW | 来源:发表于2019-04-22 14:21 被阅读0次

    概述

    开发node的初衷,就是开发一个非阻塞IO功能、高性能web服务器,所以node的HTTP模块是核心中核心。

    简易的node服务器搭建

    var http = require('http');
    
    http.createServer(function (request, response){
      response.writeHead(200, {'Content-Type': 'text/plain'});
      response.write("Hello World");
      response.end();
    }).listen(3000, '127.0.0.1');
    

    另一种写法

    var http = require('http');
    
    function onRequest(request,response){
        response.writeHead(200,{"Content-type":"text/plain"});
        response.write("hello wanggw");
        response.end();
    }
    http.createServer(onRequest).listen(3000, '127.0.0.1')
    //var server = http.createServer([requestListener]) :创建并返回一个HTTP服务器对象
    
    //server.listen(port, [hostname], [backlog], [callback]) :监听客户端连接请求,只有当调用了 listen 方法以后,服务器才开始工作
    //port : 监听的端口
    //hostname : 主机名(IP/域名),可选
    //backlog : 连接等待队列的最大长度,可选
    //callback : 调用listen方法并成功开启监听以后,会触发一个 listening事件,callback将作为该事件的执行函数,可选
    
    //request 对象
    //参数request对象是 http.IncomingMessage 的一个实例,通过它 ,我们可以获取到这次请求的一些信息,比如头信息,数据,url参数等等
    //常见参数:
        //httpVersion: 使用的http协议的版本
        //headers : 请求头信息中的数据
        //url : 请求的地址
        //method : 请求方式
    
    
    
    
    //response 对象
    //向该次请求的客户端输出返回响应。
    
    //response.writeHead(statusCode, [reasonPhrase], [headers]):向请求回复响应头
        //这个方法只能在当前请求中使用一次,并且必须在response.end()之前调用。
        //statusCode: 一个三位数的HTTP状态码, 例如 404
        //reasonPhrase:自行设置http响应状态码对应的原因短语
        //headers:响应头的内容
    
    //write(chunk, [encoding]) : 发送一个数据块到响应正文中 ,如果这个方法被调用但是 response.writeHead() 没有被调用,
        //它将切换到默认header模式并更新默认的headers。chunk可以是字符串或者缓存。如果chunk 是一个字符串,
        //第二个参数表明如何将这个字符串编码为一个比特流。默认的 encoding是'utf8'。
    
    
    //end([data], [encoding]): 当所有的正文和头信息发送完成以后,调用该方法告诉服务器数据已经全部发送完成了。
        //这个方法在每次完成信息发送以后必须调用,并且是最后调用,如果指定了参数 data , 
        //就相当于先调用 response.write(data, encoding) 之后再调用 response.end()
    
    
    //setHeader(name, value) : 为默认或者已存在的头设置一条单独的头信息:如果这个头已经存在于 将被送出的头中,将会覆盖原来的内容。
        //如果设置更多的头, 就使用一个相同名字的字符串数组
        //如:response.setHeader("Set-Cookie", ["type=ninja", "language=javascript"]);
    

    以上代码第一行var http = require("http")就是表示引入了node的http模块,然后调用createServer方法,创造一个node服务器实例。

    createServer方法中传入函数会自动执行,所以也称为请求处理函数,实际上createServer构造函数返回的server对象是一个EventEmitter(事件触发与事件监听器功能的封装);

    备注:在编写时每次修改代码都需要重启服务,可以通过supervisor模块解决问题。

    //安装
    npm install -g supervisor
    //启动
    supervisor server.js
    

    相关文章

      网友评论

          本文标题:NodeJs基础学习--http模块(5)

          本文链接:https://www.haomeiwen.com/subject/swlcwqtx.html