位置: 编程技术 - 正文

NodeJS学习笔记之Http模块(nodejs使用视频教程)

编辑:rootadmin

推荐整理分享NodeJS学习笔记之Http模块(nodejs使用视频教程),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:nodejs 书,nodejs入门教程,nodejs使用视频教程,nodejs实例教程,nodejs入门教程,nodejs实例教程,nodejs入门教程,nodejs入门,内容如对您有帮助,希望把文章链接给更多的朋友!

一,开篇分析

首先“Http”这个概念大家应该比较熟悉了,它不是基于特定语言的,是一个通用的应用层协议,不同语言有不同的实现细节,但是万变不离其宗,思想是相同的,

NodeJS作为一个宿主运行环境,以JavaScript为宿主语言,它也有自己实现的一套标准,这篇文章我们就一起来学习一下 “Http模块” 。但是作为前提来说,

希望大家可以先阅读一下官网提供的api,有一个前置了解,这样就方便多了,以下是Http部分的api概览:

让我们先从一个简单例子开始,创建一个叫server.js的文件,并写入以下代码:

(node server.js)以下是运行结果:

二,细节分析实例

具体看一下这个小例子:

(1行):通过"require"引入NodeJS自带的"http"模块,并且把它赋值给http变量。

(2行):调用http模块提供的函数:"createServer" 。这个函数会返回一个新的web服务器对象。

  参数 "requestListener" 是一个函数,它将会自动加入到 "request" 事件的监听队列。

  当一个request到来时,Event-Loop会将这个Listener回调函数放入执行队列, node中所有的代码都是一个一个从执行队列中拿出来执行的。

  这些执行都是在工作线程上(Event Loop本身可以认为在一个独立的线程中,我们一般不提这个线程,而将node称呼为一个单线程的执行环境),

  所有的回调都是在一个工作线程上运行。

  我们在再来看一下"requestListener"这个回调函数,它提供了两个参数(request,response),

  每次收到一个请求时触发。注意每个连接又可能有多个请求(在keep-alive的连接中)。

NodeJS学习笔记之Http模块(nodejs使用视频教程)

  "request"是http.IncomingMessage的一个实例。"response"是http.ServerResponse的一个实例。

  一个http request对象是可读流,而http response对象则是可写流。

  一个"IncomingMessage"对象是由http.Server或http.ClientRequest创建的,

  并作为第一参数分别传递给"request"和"response"事件。

  它也可以被用来访问应答的状态,头文件和数据。

  它实现了 "Stream" 接口以及以下额外的事件,方法和属性。(具体参考api)。

(3行):“writeHeader”,使用 "response.writeHead()" 函数发送一个Http状态和Http头的内容类型(content-type)。

  向请求回复响应头。"statusCode"是一个三位是的HTTP状态码,例如 。最后一个参数,"headers",是响应头的内容。

  举个栗子:

 注意:Content-Length 是以字节(byte)计算,而不是以字符(character)计算。

  之前的例子原因是字符串 “Hello World !” 只包含了单字节的字符。

  如果body包含了多字节编码的字符,就应当使用Buffer.byteLength()来确定在多字节字符编码情况下字符串的字节数。

  需要进一步说明的是Node不检查Content-Lenth属性和已传输的body长度是否吻合。

 statusCode是一个三位是的HTTP状态码, 例如:"" 。这里要说的是 "http.STATUS_CODES" ,全部标准"Http"响应状态码的集合和简短描述都在里面。

 如下是源码参考:

节选自,Nodejs源码 ”http.js“ 行开始。

其实从客户端应答结果也不难看出:

(6行):”response.end“------当所有的响应报头和报文被发送完成时这个方法将信号发送给服务器。服务器会认为这个消息完成了。

  每次响应完成之后必须调用该方法。如果指定了参数 “data” ,就相当于先调用 “response.write(data, encoding) ” 之后再调用 “response.end()” 。

(8行):”server.listen()“ ------ 服务器用指定的句柄接受连接,绑定在特定的端口。

标签: nodejs使用视频教程

本文链接地址:https://www.jiuchutong.com/biancheng/377952.html 转载请保留说明!

上一篇:Nodejs学习笔记之NET模块(nodejs实战教程)

下一篇:NodeJS学习笔记之FS文件模块(nodejs入门教程)

  • 撤销增值税申报流程
  • 计提房产税会计分录怎么做
  • 增值税的免税项目有哪些
  • 在外地设立分公司如何办理
  • 所得税营业成本包括税金及附加吗
  • 承兑汇票可以当现金用吗
  • 个人独资企业法人可以变更吗?
  • 金融资产的划分标准以及相关的处理怎么做
  • 结转入库材料计划成本的会计分录例题
  • 医院 科室承包
  • 参与工会职工应享受哪些福利待遇
  • 行政单位发过节费违法吗
  • 报表中利润为什么税后比税前大?
  • 为什么企业要预缴增值税
  • 咨询服务费属于什么会计科目
  • 核算错误和重分类错误
  • 汇兑差额会计处理
  • 多缴个税账务处理
  • Realtek高清晰音频管理器设置方法
  • 电脑cpu风扇不动怎么办
  • 通用pe工具箱安装教程
  • linux的命令行指的是什么
  • 欠条和收条,哪个更真实
  • 反映企业利润的指标有
  • 无线路由器限速怎么办
  • 工程竣工结算和决算的区别
  • macos10.15.7补充更新
  • repair.exe是什么软件
  • fpassist.exe是什么进程 有什么作用 fpassist进程查询
  • anaconda更改虚拟环境路径
  • spring的配置文件中的内容
  • fmt println
  • ussd命令
  • 研发费用加计扣除75%还是100%
  • 一般纳税人企业所得税税率2023
  • 租赁发票的租赁日期怎么写
  • 出口免税免的是哪部分的税
  • 减免税款的会计分录当月做吗
  • 金税盘怎么看税收编码版本号
  • Postgre数据库Insert 、Query性能优化详解
  • 每天统计数据的表格
  • 增值税中进项税额转出是什么意思
  • 销售退回采购方的会计分录
  • 分销佣金账务处理流程
  • 债务重组的账务处理和税收差异
  • 汽修厂印花税怎么交
  • 现金日记账年结怎么划线
  • 发票金额跟实际金额为什么不一样
  • 物业安装摄像头的规定
  • 航天信息何去何从
  • 公司现金支票取钱需要带什么资料
  • 单位存款的种类有哪些
  • 批发商品销售的方式有委托代销吗
  • mysql存储引擎面试题
  • mysql 5.7.11 winx64安装配置教程
  • 恢复注册表的方法
  • window web
  • msng.exe是什么
  • win10如何添加蓝牙驱动
  • centos基本环境
  • win7复制文件到system32没有权限
  • linux的hostname(主机名)修改详解
  • rhel配置网卡文件和图形界面
  • Linux Mint 5 XFCE Community Edition RC1 (BETA 025) 本月17日开始发布
  • removed.exe - removed是什么进程 有什么用
  • win7服务在哪里打开
  • linux常见的启动方式
  • fat32和fat16
  • linux中的shell命令
  • python第三方库的安装方法有哪些
  • 原生js实现ajax步骤
  • android 自定义linearlayout 宽度计算不对
  • javascript怎么编写
  • 江苏国家电子税务局网站
  • 税务稽查操作规范
  • 航天信息服务费300元
  • 广西电票科技有限公司
  • 软件使用权转让税率
  • 亏损可以结转吗
  • 官方客服热线人工台电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设