http模块主要用到四个方法:

  1.Server类

    const http = require('http');

    let server = new Server();

    server.on('request',function(req,res){

      res.writeHead(200,{content-type:'text/plain'});

    } );

    server.listen(3000,function(){});

    http.Server 主要的事件有:

      ~ request,当客户端发送请求时触发,回调函数会有req和res参数。

      ~ connection,当TCP链接建立时事件触发,提供一个socket参数,是net.socket的实例。这里不作说明。

      ~ close,当服务器关闭时触发事件。

  2.createServer( function(req,res){} );

    此方法相当于Server添加了一个request事件。

  以上1、2的req是http.IncomingMessage的实例,其提供了三个事件:

      ~ data:当请求体数据到来时该事件被触发。该事件提供一个chunk作为参数,代表接受到的数据。

      ~ end:当请求体数据传输完毕时该事件被触发。

      ~close:用户当前请求结束时触发。

      同时,http.IncomingMessage提供的主要属性有:

      ~ method:http请求的方法。

      ~ headers:http请求头。

      ~ url:请求路径。

      ~ httpVersion:http协议版本。

    res是http.ServerResponse的实例,常用方法:

      ~ res.writeHead(statusCode,[headers])。

      ~ res.write(data[,encoding]);向请求发送内容。

      ~ res.end([data]);结束请求。

  Server()和createServer()返回的是一个基于事件的http服务器。

  3.request()

    request()必须end()。

    const http = require('http');

    http.request(option[,function(res){}]).end();

    ~ option 为JSON对象,主要有host、port(默认80)、method(默认get)、path(请求的相对路径、默认'/')、headers等。

  4.get()

    http.get()方法是http.request()的get方法写法,同样需要end();

  request()和get()返回的是一个http.ClientRequest类实例。其主要的事件和方法有:

    ~ response,该事件当收到响应时触发。

    ~ request.write(chunk[,encoding,callback]),发送请求数据。

    ~ end(),请求完毕,应该始终指定该方法。

  

nodejs--http的更多相关文章

  1. NodeJs之OS

    OS Node.js提供了一些基本的底层操作系统的模块OS. API var os = require('os'); console.log('[arch] 操作系统CPU架构'+os.arch()) ...

  2. NodeJs之Path

    Path模块 NodeJs提供的Path模块,使得我们可以对文件路径进行简单的操作. API var path = require('path'); var path_str = '\\Users\\ ...

  3. NodeJs之调试

    关于调试 当我们只专注于前端的时候,我们习惯性F12,这会给我们带来安全与舒心的感觉. 但是当我们使用NodeJs来开发后台的时候,我想噩梦来了. 但是也别泰国担心,NodeJs的调试是很不方便!这是 ...

  4. NodeJs在Linux下使用的各种问题

    环境:ubuntu16.04 ubuntu中安装NodeJs 通过apt-get命令安装后发现只能使用nodejs,而没有node命令 如果想避免这种情况请看下面连接的这种安装方式: 拓展见:Linu ...

  5. NodeJs之child_process

    一.child_process child_process是NodeJs的重要模块.帮助我们创建多进程任务,更好的利用了计算机的多核性能. 当然也支持线程间的通信. 二.child_process的几 ...

  6. nodejs进阶(6)—连接MySQL数据库

    1. 建库连库 连接MySQL数据库需要安装支持 npm install mysql 我们需要提前安装按mysql sever端 建一个数据库mydb1 mysql> CREATE DATABA ...

  7. 图片访问实时处理的实现(nodejs和php)

    我在访问时光网.网易云音乐等网站时,发现将它们页面中的一些图片URL修改一下就可以得到不同尺寸的图片,于是思考了其实现方案,我的思路是:URL Rewrite + 实时处理 + 缓存,对用户请求的UR ...

  8. nodejs进阶(4)—读取图片到页面

    我们先实现从指定路径读取图片然后输出到页面的功能. 先准备一张图片imgs/dog.jpg. file.js里面继续添加readImg方法,在这里注意读写的时候都需要声明'binary'.(file. ...

  9. nodejs进阶(3)—路由处理

    1. url.parse(url)解析 该方法将一个URL字符串转换成对象并返回. url.parse(urlStr, [parseQueryString], [slashesDenoteHost]) ...

  10. 【原】nodejs全局安装和本地安装的区别

    来微信支付有2年多了,从2年前的互联网模式转变为O2O模式,主要的场景是跟线下的商户去打交道,不像以往的互联网模式,有产品经理提需求,我们帮忙去解决问题. 转型后是这样的,团队成员更多需要去寻找业务的 ...

随机推荐

  1. Android 实现电话录音(窃听)

    配置文件 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android=&qu ...

  2. matlab练习程序(随机直线采样)

    我只是感觉好玩,写了这样一段程序. 原理就是先随机生成两个点,然后根据这两个点画直线,最后在直线上的像素保留,没在直线上的像素丢弃就行了. 最后生成了一幅含有很多空洞的图像. 当然,对含有空洞的图像是 ...

  3. Jcrontab定时任务

           两篇博客:     http://blog.csdn.net/jijijiujiu123/article/details/9086847    网站同事写的(chenrui)       ...

  4. 域名和DNS服务器

    概念性的东西: 域名:     ①.百度:域名(Domain Name),是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理 ...

  5. java中加密的方式概述

    加密是用一种特殊的算法改变原有的数据,使未经授权的用户即使获得了已经加密的信息,但不知其解密的方法,仍然无法了解信息的内容.     大体上分为单向加密和双向加密,双向加密又可分为对称加密和非对称加密 ...

  6. 设计模式之模板方法模式(Template)

    一.介绍 模板方法模式是编程中经常用到的模式.它定义了一个操作中的算法骨架,将某些步骤延迟到子类中实现.这样,新的子类可以在不改变一个算法结构的前提下重新定义该算法的某些特定步骤. 二.场景举例 当一 ...

  7. 通过调用Word模板(Doc、dot)直接打印 z

    通过替换模板中的指定 书签 来进行内容的替换.整合,然后直接发送到打印打印,也可以导出.即把打印出的语句换成保存函数. public static class myPrintByOffice      ...

  8. ASP.NET中引用dll“找不到指定模块"的完美解决办法 z

    DllImport是System.Runtime.InteropServices命名空间下的一个属性类,其功能是提供从非托管DLL导出的函数的必要调用信息.DllImport属性应用于方法,要求最少要 ...

  9. 用AutoHotkey重置Excel的Ctrl+Alt+方向键选择的范围

    当前选择是蓝色单元格,原来的Ctrl+Alt+方向键,是选中[蓝色]到[红色]单元格的区域, 经过脚本修改后,则是[蓝色]到[黄色]的区域,应该更符合日常使用, 特别是表格比较大的时候,一直按住鼠标滚 ...

  10. May 31st 2017 Week 22nd Wednesday

    No great discovery was ever made without a bold guess. 没有大胆的猜测就没有伟大的发现. When our ancestors saw the b ...