Node.js(十一)——request/get实现评论功能

http的get/request可以从后台发起一个http请求从而可以获取远程的资源

,甚至是更新和同步远程的资源,非常有用。

本质上request返回的是一个clientRequest类的实例

这个clientRequest的实例是一个可写的流,如果你需要使用post请求上传一个文件,

那么这个文件就会被写入到clientRequest对象里面,

该怎么用的?

语法:http.request(options[,callback])

如果第一个参数是对象的话,就可以进行一系列的配置,来定制我们需要发出的请求的格式,

常见参数有:

host:java服务器域名或者是IP地址

hostName:host的别名

port:端口号 默认是80

localAddress:用于绑定到网络连接的本地接口

method:一个指定 HTTP 请求方法的字符串。默认为 ‘GET‘

path:请求的路径。默认为 ‘/‘。 应包括查询字符串(如有的话)。如 ‘/index.html?page=12‘

headers :一个包含请求头的对象

auth:用于计算认证头的基本认证,一般是user跟上password

agent :控制 Agent 的行为

keepAlive:保持资源周围的套接字在未来能被继续用于其他请求,默认是false

来实现一个评论的提交功能。。。

重点参考:Request Headers


其次是:Response,返回的一般是json数据

我们需要把Request Headers里的内容拷出来

这一些参数对于后台服务器做解析判断你是登录的并且是真实用户,那这个评论是合法的,

var http = require(‘http‘)
//可以把一个对象序列化
var querystring = require(‘querystring‘)

var postData = querystring.stringify({
	‘content‘:‘正在准备第二季‘,
	‘cid‘:348
})

var options = {
	hostname:‘www.imooc.com‘,
	port:80,
	path:‘/course/docomment‘,
	method:‘POST‘,
	headers:{
		‘Accept‘:‘application/json, text/javascript, */*; q=0.01‘,
		‘Accept-Encoding‘:‘gzip, deflate‘,
		‘Accept-Language‘:‘zh-CN,zh;q=0.8‘,
		‘Connection‘:‘keep-alive‘,
		//这里的长度修改更改
		‘Content-Length‘:postData.length,
		‘Content-Type‘:‘application/x-www-form-urlencoded; charset=UTF-8‘,
		‘Cookie‘:‘imooc_uuid=80a28286-15ef-4fe7-a10f-341b99d11357; imooc_isnew_ct=1486736221; bdshare_firstime=1486736247756; AJSTAT_ok_times=18; PHPSESSID=mjhe6ik85emsonjhsn7v3t9mp4; loginstate=1; apsid=QzN2U2OGVhM2I0NGE0MGNmNmNjYmEzN2Q5YTA0M2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjkwMDcxNgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NDU3NzkyNjVAcXEuY29tAAAAAAAAAAAAAAAAAAAAAGUwZmFlMDJiYjg4YTBkMjcxMmE5YjcyYzJlZjIxNzhhb0HWWG9B1lg%3DOW; last_login_username=845779265%40qq.com; Hm_lvt_f0cfcccd7b1393990c78efdeebff3968=1490406351,1490435767,1490435811,1490450848; Hm_lpvt_f0cfcccd7b1393990c78efdeebff3968=1490490428; IMCDNS=0; imooc_isnew=2; cvde=58d5080dadc94-140‘,
		‘Host‘:‘www.imooc.com‘,
		‘Origin‘:‘http://www.imooc.com‘,
		‘Referer‘:‘http://www.imooc.com/comment/348‘,
		‘User-Agent‘:‘Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36‘,
		‘X-Requested-With‘:‘XMLHttpRequest‘
	}
}

var req = http.request(options,function(res){
	console.log(‘Status:‘+res.statusCode)
	console.log(‘headers:‘+JSON.stringify(res.headers))
	//我们在接收数据的时候是已流的方式发送上来的,所以会
	//触发一个on.data事件

	res.on(‘data‘,function(chunk){
		console.log(Buffer.isBuffer(chunk))
		console.log(typeof chunk)
	})

	//网络结束
	res.on(‘end‘,function(){
		console.log(‘评论完毕‘)
	})

})
req.on(‘error‘,function(e){
		console.log(‘Error:‘+e.message)
})
//write
req.write(postData)
//end
req.end()

运行结果如下:

效果图如下(要手动刷新页面,因为评论是在本地进行的,不会进行ajax请求):

get方法,大多数情况下我们只是提交一个请求用来查询,其实并没有具体的

数据提交,这个时候就会用get方法;和request方法区别是:

method设置为get同时会自动调用end方法

时间: 2024-10-25 07:56:04

Node.js(十一)——request/get实现评论功能的相关文章

Nodejs学习笔记(八)--- Node.js + Express 实现上传文件功能(felixge/node-formidable)

目录 前言 formidable简介 创建项目并安装formidable 实现上传功能 运行结果 部分疑惑解析 写在之后 前言 前面讲了一个构建网站的示例,这次在此基础上再说说web的常规功能----文件上传,示例以一个上传图片的功能为例子 上传功能命名用formidable实现,示例很简单! PS:最近比较忙,距上一次更新已经比较久了^_^! formidable简介 nodejs原生实现上传还是比较麻烦,有兴趣的自已去参考一下网上有网友写的代码 这里选择了formidable,也是githu

node.js学习(2)--路由功能以及表单上传

今天按照<node.js入门>这本书学习了node的一些基础知识,包括服务器的创建,路由功能的实现,表单上传和数据处理,感觉开始明白了node.js的一些基本原理.这本书说的很详细也很基础,很适合初学者学习.node.js入门 众所周知,node跟php语言不一样,node不需要依赖于apache等服务器,因为node本身就能够构建服务器!所以,再用node开发网站之前我们首先得学会如何搭建服务器.关于node创建服务器在我之前的博客已经有介绍,这里不再赘述. 完成一个表单上传与数据处理的de

node.js的request模块

request模块让http请求变的更加简单.最简单的一个示例: 1: var request = require('request'); 2:  3: request('http://www.google.com', function (error, response, body) { 4: if (!error && response.statusCode == 200) { 5: console.log(body); 6: } 7: }) 安装: npm install reques

node.js实现CURL功能

PHP中的CURL功能很好实现,直接四五行代码封装一下就OK了.node.js中如何实现CURL的功能呢,下面详细介绍. 这里需要用到request这个库,所以先安装此包: npm install request 安装下来之后, 就是代码实现的问题了.示例代码如下(只实现了POST方法): var request = require('request'); request.post( { url:'http://hovertree.com:9095/phpTest.php', form:{ us

系列文章--Node.js学习笔记系列

Node.js学习笔记系列总索引 Nodejs学习笔记(一)--- 简介及安装Node.js开发环境 Nodejs学习笔记(二)--- 事件模块 Nodejs学习笔记(三)--- 模块 Nodejs学习笔记(四)--- 与MySQL交互(felixge/node-mysql) Nodejs学习笔记(五)--- Express安装入门与模版引擎ejs Nodejs学习笔记(六)--- Node.js + Express 构建网站预备知识 Nodejs学习笔记(七)--- Node.js + Exp

Node.js 网页瘸腿爬虫初体验

延续上一篇,想把自己博客的文档标题利用Node.js的request全提取出来,于是有了下面的初哥爬虫,水平有限,这只爬虫目前还有点瘸腿,请看官你指正了. // 内置http模块,提供了http服务器和客户端功能 var http=require("http"); // 内置文件处理模块 var fs=require('fs'); // 创建一个将流数据写入文件的WriteStream对象 var outstream=fs.createWriteStream('./1.txt'); /

Node.js学习系列总索引

Node.js学习系列也积累了一些了,建个总索引方便相互交流学习,后面会持续更新^_^! 尽量写些和实战相关的,不讲太多大道理... Node.js学习笔记系列总索引 Nodejs学习笔记(一)--- 简介及安装Node.js开发环境 Nodejs学习笔记(二)--- 事件模块 Nodejs学习笔记(三)--- 模块 Nodejs学习笔记(四)--- 与MySQL交互(felixge/node-mysql) Nodejs学习笔记(五)--- Express安装入门与模版引擎ejs Nodejs学

容联云通讯API的学习过程及 RestAPI Node.js 封装

进入正文~ 公司最近有个活动,会用到云通讯的功能.作为一个全栈工程师自然是对 JavaScript 比较熟一点,所以决定选择 Nodejs 来进行开发.看了一下云通讯的文档,没有 Nodejs 的 SDK (´°????????ω°????????`) 好在 Rest API 是基于 HTTP 协议的,用其他语言也能很容易地实现接口 (?>?<?) 可能是因为对云通讯这种功能没什么概念吧,看了一遍文档还是云里雾里的.怎么办呢……于是决定对着文档一个一个接口试,试下来以后对云通讯的功能也有了个大

node.js 第一天

Node.js入门和企业级应用开发实战 第1天课堂笔记(本课程共8天) 目录 目录................................................................................................................................................................ 2 一.Node.js简介...................................