位置: 编程技术 - 正文

深入解析nodejs HTTP服务(深入解析windows第7版pdf)

编辑:rootadmin

推荐整理分享深入解析nodejs HTTP服务(深入解析windows第7版pdf),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:深入解析windows第7版pdf,深入解析c# 第四版 百度网盘,深入解析java编译器:源码剖析与实例详解,深入解析抑郁症:什么是它的表现?别小看它的危害程度!,深入解析windows第7版pdf,深入解析windows,深入解析什么意思,深入解析什么意思,内容如对您有帮助,希望把文章链接给更多的朋友!

我最近在研究nodejs的路上,正好这两天了解了nodejs HTTP服务,那么今天也算个学习笔记吧!

nodejs最重要的方面之一是具有非常迅速的实现HTTP和HTTPS服务器和服务的能力。http服务是相当低层次的,你可能要用到不同的模块,如express来实现完整的Web服务器,http模块不提供处理路由、cookie、缓存等的调用。我们主要用http模块的地方是实现供应用程序使用的后端Web服务。

1.处理URL

统一资源定位符(URL)为把一个请求发到正确的服务器的特定端口上,并访问合适的数据提供了所有需要的信息。一个URL可以被分解成几个不同的组成部分,每个部分都为Web服务器如何路由和处理来自客户端的HTTP请求提供一块基本的信息。node提供了url模块,提供了把一个URL字符串转换成一个URL对象的功能。

要从一个URL字符串创建URL对象,把URL字符串作为第一个参数下面的方法:

其中,parseQueryString参数是一个布尔值,如果为true,那么也把URL的查询字符串部分解析为对象字面量,默认值为false。

slashesDenoteHost参数也是一个布尔值,如果为true,那么就会把格式为//host/path的URL解析为{host:'host',pathname:'/path'},而不是{pathname:'//host/path'}

还可以用url.format(urlObj)方法将一个URL对象转换成字符串的形式。

由url.parse()创建出来的URL对象的属性:

path 完整路径,包括路径和搜索 query 要么是查询字符串中的参数部分,要么是含有查询字符串参数和值的解析后的对象。如果parseQueryString设置为true,那么就是解析后的对象 search URL的查询字符串部分,包括前导的问号 pathname URL的路径部分(包括最初的斜线,如果存在的话) port 主机的端口号 hostname 主机的主机名,小写 auth URL的身份认证信息 host URL的完整主机部分,包括端口信息,小写 protocol 请求协议 href 这是最初解析的完整的URL字符串 hash URL的散列部分,包括井号

2.解析URL组件

url模块有用的一种功能就是用与浏览器相同的方式来解析URL的组件,这可以让你在服务器端操作URL字符串,以在URL中作出调整。

把一个URL解析到新的位置:

其中,from指定了原始基础URL字符串,to指定了想要URL被解析到的新位置。

举个例子:

3.处理查询字符串和表单参数

HTTP请求通常在URL中包含查询字符串(由URL对象获得)或在正文内包含参数数据来处理表单的提交(从客户端请求的正文读出)。查询字符串和表单参数都只是基本的键值对,需要使用querystring模块的parse()方法将字符串转换成JavaScript对象:

str是查询或参数字符串,sep参数允许你指定使用的分隔符,默认的分隔符是&,eq参数允许你指定分析时使用的赋值运算符,默认值为=,options参数是一个具有属性maxKeys的对象,它能够让你限制生成的对象可以包含的键的数量,默认是。

深入解析nodejs HTTP服务(深入解析windows第7版pdf)

4.请求、响应和服务器对象

(1) http.ClientRequest对象

当你构建一个HTTP客户端时,调用http.request()使得一个ClientRequest对象在内部被创建,这个对象是为了当该请求在服务器上进展的时候来表示它。通常使用ClientRequest对象来启动、监控和处理来自服务器的响应。

实现ClientRequest对象:

其中,options参数是一个对象,其属性定义了如何把客户端的HTTP请求打开并发送到服务器,包括host,path,method,port等属性。callback是一个回调函数,在把请求发送到服务器后,处理从服务器返回的响应时调用此回调函数,此回调函数唯一的参数是一个IncomingMessage对象,该对象是来自服务器的响应。

一个ClientRequest对象的基本实现:

ClientRequest对象的方法:

write(chunk,[encoding]) 把一个正文数据块(Buffer或String对象)写入请求 end([data],[encoding]) 把可选的数据写入请求正文,然后刷新Writeable流并终止该请求 abort() 终止当前的请求 setTimeout(timeout,[callback]) 为请求设置套接字超时时间 setNoDelay([noDelay]) 禁用在发送数据之前缓冲数据的Nagle算法,noDelay是一个布尔值,true表示立即写,false表示缓冲写入 setSocketKeepAlive([enable],[initialDelay]) 启用和禁用对客户机请求的保持活动功能,enable默认为false,即禁用;initialDelay指定最后一个数据包和第一个保持活动请求之间的延迟

(2)http.ServerResponse对象

当HTTP服务器接收到一个Request事件时,它在内部创建ServerResponse对象,这个对象作为第二个参数被传递到request事件处理程序。可以使用ServerResponse对象指定并发送到客户端的响应。

ServerResponse对象的方法:

writeContinue() 发送一个HTTP/1.1 Continue消息给客户端,请求被发送的正文内容 writeHead(statusCode,[reasonPhrase],[headers]) 把一个响应标头写入请求,例如response.writeHead(,'successs',{'Content-Length':body.length,'Content-Type':'text/plain'}); setTimeout(timeout,[callback]) 设置客户端连接的套接字超时时间 setHeader(name,value) 设置一个特定的标头值 getHeader(name) 获取已在响应中设置的一个HTTP标头 removeHeader(name) 移除已在响应中设置的一个HTTP标头 write(chunk,[encoding]) 写入chunk,Buffer或String对象到响应Writeable流,仅把数据写入响应的正文部分 addTrailers(headers) 将HTTP尾随标头写入响应的结束处 end([data],[encoding]) 把可选的数据输出写入响应的正文,然后刷新Writeable流并响应该请求

(3)http.IncomingMessage对象

HTTP服务器和客户端都创建IncomingMessage对象,该对象实现了Readable流,让你能够把客户端请求或服务器响应作为流院读入,这意味着它们的readable和data事件可以被监听并用来从流中读出数据。

IncomingMessage对象中可用的事件、属性和方法

close 当底层套接字被关闭时发出 httpVersion 指定用于构建客户端请求/响应的HTTP版本 headers 包含了随请求/响应发送的标头的一个对象 method 指定用于请求/响应的方法 url 发送到服务器的URL字符串 statusCode 指定来自服务器的3位数状态码 socket 一个指向net.Socket对象的句柄,用来与客户端/服务器的通信 setTimeout(timeout,[callback]) 设置连接的套接字超时时间

(4)HTTP Server对象

HTTP Server对象提供了实现HTTP服务器的基本框架,它提供了一个监听端口的底层套接字和接收请求,然后发送响应给客户端连接的处理程序,当服务器正在监听时,node应用程序并没有结束。

要启动HTTP服务器,首先需要createServer()方法创建一个Server对象:

此方法返回Server对象,requestListener参数是在请求事件被触发时执行的回调函数,此回调函数接收两个参数,一个是代表客户端请求的IncomingMessage对象,第二个参数是用来指定和发送响应的ServerResponse对象。

创建了server对象,就可以在server对象上的listen()方法开始监听它:

一个基本的例子:

实现一个基本的静态文件服务

实现动态的GET服务器

标签: 深入解析windows第7版pdf

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

上一篇:利用node.js爬取指定排名网站的JS引用库详解(node爬取数据)

下一篇:nodejs body-parser 解析post数据实例

  • 计提的增值税和实际缴纳的差额
  • 小规模纳税人应纳增值税额的计算
  • 公司附加税怎么计算
  • 所得税费用影响净利润吗
  • 不超45万是含税还是不含税
  • 红字信息表可以开一半吗
  • 营改增企业所得税
  • 房地产企业所得税汇算清缴
  • 计算土地增值税时增值税可以扣除吗
  • 三证合一后银行开户许可证还有吗
  • 银行卡撤销账户
  • 固定资产完工前盘亏的工程物资净损失
  • 贴现利息应该计入哪个科目
  • 设备服务费是什么
  • 机动车强制保险新政策
  • 策划费收费标准
  • 增值税票查无此票是什么原因
  • 不能远程补报之前的税款所属期
  • 为员工购置小车怎么做账
  • 小微企业减免所得税
  • 以不动产对外投资要交什么税
  • 怎么区分进和近
  • 对方给我们开发票
  • 年末利润分配会计处理
  • 资源税进什么科目
  • 出票人账号是付款号吗
  • 租入固定资产装修
  • 固定资产更新改造替换部件怎么做账务处理
  • 库存商品售价
  • proflwiz.exe - proflwiz是什么进程 有什么用
  • 电脑维修中常用的软件
  • 预付维修费计入入账价值吗
  • 财务会计制度
  • 营改增后房地产企业账务处理
  • 电脑桌面小工具软件
  • PHP:imagesetthickness()的用法_GD库图像处理函数
  • 债券投资账务处理例题
  • 坏账核销能否增加利润
  • php如何实现
  • 开发票的零税率和免税有什么区别
  • php的基本知识
  • 本期应纳税额减征额是什么意思
  • 生产销售库存的会计科目
  • 报销职工福利
  • vue如何实现路由跳转缓存
  • 房地产土地使用权计入存货吗
  • 认缴制和实缴制的区别公司破产
  • 产品检测费计入成本吗
  • 工会经费的计提基数不包括
  • 个人所得税工资薪金包括哪些内容
  • 核定征收一般纳税人进项是否可抵扣
  • 无形资产按取得时的什么入账
  • 业务招待费 纳税调增
  • 开办费企业所得税处理
  • 租赁动迁补偿条款
  • 工程款开票数量和单价要填吗
  • 研发支出的定义
  • 收到劳务公司代发工资怎么做账
  • 企业哪些项目可以立项
  • 无形资产资本化加计扣除可抵扣暂时性差异
  • 低值易耗品与固废的区别
  • win10 mysql 5.6.35 winx64免安装版配置教程
  • 简单介绍linux系统有哪些主要特点?
  • stdin命令
  • 用u盘装系统怎么操作步骤
  • windows102021年更新
  • ubuntu安装visual studio2019
  • 删除kernel
  • 开始菜单里没有设置选项
  • win10预览版和正式版区别
  • 批处理查找字符中含有等号的子串
  • jquery上滑下滑
  • bootstrap的表格
  • python2编码问题
  • JavaScript indexOf方法入门实例(计算指定字符在字符串中首次出现的位置)
  • jquery 图片
  • android 圆形图片
  • 印花税怎么计提科目
  • 企业月度统计表在哪里查找
  • 印尼贸易政策
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设