Node.js之HTTP请求与响应
在C#、OC中也是客户端发起一个请求,服务端作出响应。我们可以把这个过程抽象理解 .
1.客户端给服务端发起请求相当于向服务端写入一个流(writable)
2.服务端读取客户端的流(readable)
3.服务端向客户端作出响应相当于向客户端写入一个流(writable)
4.客户端读取服务端的响应(readable)
整个流程分为两部分一是客户端的处理而是服务端的处理.最主要的还是客户端请求和服务端响应.
一、http.ClientRequest对象
它实现了writable流,可以使用它的所有功能。http模块中使用http.request(options,callback)方法来生成该对象。
1.options主要包括以下几个可选:
host :服务器域名或IP地址,默认localhost
hostname:与host相同,但对url.parse()的支持优于host.
port:端口
localAddress:网络连接的本地接口
socketPath:Unix域套接字(使用host:port或socketPath)
method:请求方法 :GET、POST等默认GET
path:请求的资源路径默认/.也可包括查询字符串
headers:请求头
auth:身份认证
agent:代理.如果使用Agent,则请求默认为Connection:keep-alive.可能的值有undefined,Agent,false
2.ClientRequest提供的事件与方法
事件:
response:当从服务器收到该请求的响应时发出。该回调处理程序接收一个IncomingMessage对象作为唯一的参数。
socket:当一个套接字分配给该请求时发出。
connect:当服务器响应一个由CONNECT方法发起的一个请求时发出。如果该事件未被客户端处理,那么该连接将关闭
upgrade:当服务器响应在其标头包括一个更新请求的请求时发出
continue:当服务器发送一个100ContinueHTTP响应,指示客户端发送请求正文时发出
方法:
write()、end()和writable流一样
abort():终止请求。
setTimeout(timeout,[callback]):设置请求超时时间
setNoDelay([noDelay]):noDelay布尔值,true立即写入,false缓冲写入
setSocketKeepAlive([enable],[initualDelay]):启用和禁用对客户机请求的保持活动功能。initualDelay指定最后一个数据包和第一个保持活动请求之间的延迟。
二、http.ServerResponse对象
和http.ClientRequest对象一个也是实现了writable流。也可实现writable流的功能,另外还包括下面的事件属性和方法。
事件或属性:
close:在Response.End()刷新响应之前关闭时发出。
headersSent:布尔值.已发送为true.只读。
sendDate:布尔值,true时,Date标头自动生成,并作为响应的一部分发送
statusCode:无须显示的写入标头来指定响应状态码。
方法:
writeContinue():发送一个HTTP/1.1 100 Continue消息给客户端,请求被发送的正文内容
writeHead(statusCode,[reasonPhrase],[headers]):把一个响应标头写入请求。statusCode参数是HTTP响应状态代码,reasonPhrase是字符串,表示StatusCode的原因.headers是响应标头对象。response.writeHead(200,Success,{Content-Length:body.length,Content-Type:text/plain});
setTimeout(msecs,callback):设置客户端连接的超时时间。
setHeader(name,value):设置标头值。
getHeader(name):获取标头值。
removeHeader(name):移除标头。
addTrailers(headers):将http尾随标头写入响应的结束处。
三、客户端响应和服务端请求
上面一二主要是writable流的,readable流的包括客户端响应和服务端请求。它们都是一个对象:IncomingMessage对象。
IncomingMessage对象长成什么样子可以把它输出来看.由于IncomingMessage对象对于我们开发的来说不经常用,所以看看就好。
var http=require("http") var options={ hostname:www.baidu.com, path:, port:80, method:GET var req=http.request(options,function(response){ console.log(response); req.end();
前端需要去了解的nodejs知识(http) http超文本传输协议,稍微有点网络知识的人都晓得这个名词,那nodejs中的http和他有什么关系呢?Nodejs中的http是实现网络传输的基础模块,
Node.js系列九 - http开发web服务器 什么是Web服务器? 当应用程序(客户端)需要某一个资源时,可以向一个台服务器,通过Http请求获取到这个资源;提供服务器的这个服务器,就是一个Web服务器;
社会主义 从.Net到iOS,在撸的道路上越走越远,工作之余经营着博客园http://www.cnblogs.com/5ishare,欢迎小伙伴(妹子更好)一起交流,谈谈人生理想。作为经常从网上索取免费资料的一员,要有回报回报的思想,也让更多的人少走弯路.
相关文章
- JS框架_(JQuery.js)模拟刮奖
- JS框架_(JQuery.js)绚丽的3D星空动画
- JS框架_(JQuery.js)网页文字评论弹幕
- JS框架_(JQuery.js)高德地图api
- JS框架_(Progress.js)圆形动画进度条
- JS框架_(Vue.js)带有星期日期的数字时钟
- JS框架_(Bootstrap.js)实现简单的轮播图
- js:for循环ul/li,获取当前被点击元素的id,以及给其他li设置属性
- Node.js之HTTP请求与响应
- Knockout.Js官网学习(options绑定)
- [Node.js]22. Level 4: Dependency
- Web 端 js 导出csv文件(使用a标签)
- [Node.js] Stream all things!
- [Whole Web, Node.js, PM2] Restarting your node.js app on code change using pm2
- Atitit stomp.js conn连接activemq 目录 1.1. activemq 启动,已经默认开启了stomp ws的接口。。地址是1 1.2. Js 客户端代码1 1.3
- Atitit 研发体系 codelib 代码库的建设 目录 1. 概念与组成2 1.1. Java代码2 1.2. Js代码2 1.3. H5 代码 js+css+htm+txt2 1.4.
- 原生js实现随机验证码HTMl-JS
- three.js(JS 三维模型库)介绍和入门
- ML之RF:利用Js语言设计随机森林算法【DT之CART算法(gain index)】&并应用随机森林算法
- Node.js: node-redis.js客户端
- 手写js 数组打平
- 【JS高级】js面向对象三大特性之继承_06
- 【JS高级】js之正则相关函数以及正则对象_02