nodejs模仿http请求组件nodegrass简单例子
1、搭建nodejs环境。
2、执行npm install nodegrass命令。
3、引入模块,var ng= require(nodegrass);
4、下面先看nodegrass底层的get方法的具体实现,代码如下:
//Get Method Request
//Support HTTP and HTTPS request,and Automatic recognition
//@Param url
//@Param callback
NodeGrass.prototype.get = function(url,callback, reqheaders, charset){
var protocol = getProtocol(url);
var _defaultCharSet = 'utf8'; if(typeof charset === 'string' ){
_defaultCharSet = charset;
}
if(typeof(reqheaders) === "string" && charset === undefined) {
_defaultCharSet = reqheaders;
}
var newheader = {};
if(reqheaders !== undefined && typeof(reqheaders) === "object") {
for(var ele in reqheaders) {
newheader[ele.toLowerCase()] = reqheaders[ele];
}
}
newheader["content-length"] = 0;
var options = {
host:getHost(url),
port:getPort(url),
path:getPath(url),
method:'GET',
headers:newheader
}; if(protocol === http || protocol === https){
return _sendReq(protocol,null,options,_defaultCharSet,callback);
}else{
throw "sorry,this protocol do not support now";
} }
从中可以看出,只需要在方法调用中,加入如下参数即可:
url请求地址,
callback回调函数,
reqheaders请求头标识,一般使用 'Content-Type': 'application/x-www-form-urlencoded'
charset编码方式,一般为utf8
对应的post请求的底层实现代码如下:
//Post Method Request
//Support HTTP and HTTPS request,and Automatic recognition
//@Param url
//@Param callback
//@Param header
//@param postdata
NodeGrass.prototype.post = function(url,callback,reqheaders,data,charset){
var protocol = getProtocol(url);
var _defaultCharSet = 'utf8'; if(typeof charset === 'string' ){
_defaultCharSet = charset;
} if(typeof(data) === 'object'){data = querystring.stringify(data);}
var options={
host:getHost(url),
port:getPort(url),
path:getPath(url),
method:'POST',
headers:reqheaders
};
if(protocol === http || protocol === https){
return _sendReq(protocol,data,options,_defaultCharSet,callback)
}else{
throw "sorry,this protocol do not support now";
}
}
从中可以看出,只需要在方法调用中,加入如下参数即可:
url请求地址,
callback回调函数,
reqheaders请求头标识,一般使用 'Content-Type': 'application/x-www-form-urlencoded'
data请求所包含的具体数据,
charset编码方式,一般为utf8
封装代码如下:
var nodegrass = require('nodegrass');
var REQ_HEADERS = {
'Content-Type' : 'application/x-www-form-urlencoded'
};
// get请求
exports.ngGet = function(url, params, encoding) {
if (!encoding) {
encoding = "UTF-8";
}
var result = "";
nodegrass.get(url, function(data, status, headers) {
console.log(status);
console.log(headers);
console.log(data);
result = data;
}, REQ_HEADERS, params, encoding).on('error', function(e) {
console.log("Got error: " + e.message);
});
return result;
};
// post请求
exports.ngPost = function(url, params, encoding) {
if (!encoding) {
encoding = "UTF-8";
}
var result = "";
nodegrass.post(url, function(data, status, headers) {
console.log(status);
console.log(headers);
console.log(data);
result = data;
}, REQ_HEADERS, params, encoding).on('error', function(e) {
console.log("Got error: " + e.message);
});
return result;
}
nodejs模仿http请求组件nodegrass简单例子的更多相关文章
- jquery ajax跨域请求后台的简单例子
一.简介AJAX 是与服务器交换数据的技术,它在不重载全部页面的情况下,实现了对部分网页的更新. ajax() 方法通过 HTTP 请求加载远程数据. 该方法是 jQuery 底层 AJAX 实现.简 ...
- jquery ajax请求后台 的简单例子
jQuery.ajax(url,[settings]) 概述 通过 HTTP 请求加载远程数据. jQuery 底层 AJAX 实现.简单易用的高层实现见 $.get, $.post 等.$.ajax ...
- NodeJS+Express+Socket.io的一个简单例子
关键字:NodeJS,Express,Socket.io. OS:Windows 8.1 with update pro. 1.安装NodeJS:http://nodejs.org/. 2.初始化一个 ...
- vue 父组件调用子组件方法简单例子(笔记)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 使用nodegrass简单封装http请求例子
1.项目中经常性的使用http发送请求处理数据.而大部分请求方式为get和post,于是对http请求进行封装,提供代码的利用率. 2.nodegress是nodejs的一个请求工具. 具体步骤及代码 ...
- CANoe 入门 Step by step系列(三)简单例子的剖析【转】
最好的学习方式是什么?模仿.有人会问,那不是山寨么?但是我认为,那是模仿的初级阶段,当把别人最好的设计已经融化到自己的血液里,变成自己的东西,而灵活运用的时候,才是真正高级阶段.正所谓画虎画皮难画骨. ...
- 【转载】CANoe 入门 Step by step系列(三)简单例子的剖析
来源:http://www.cnblogs.com/dongdonghuihui/archive/2012/09/26/2704623.html 最好的学习方式是什么?模仿.有人会问,那不是山寨么?但 ...
- Spring框架系列(2) - Spring简单例子引入Spring要点
上文中我们简单介绍了Spring和Spring Framework的组件,那么这些Spring Framework组件是如何配合工作的呢?本文主要承接上文,向你展示Spring Framework组件 ...
- AgileEAS.NET SOA 中间件平台.Net Socket通信框架-简单例子-实现简单的服务端客户端消息应答
一.AgileEAS.NET SOA中间件Socket/Tcp框架介绍 在文章AgileEAS.NET SOA 中间件平台Socket/Tcp通信框架介绍一文之中我们对AgileEAS.NET SOA ...
随机推荐
- angularjs 菜鸟教程 版本1.4.6
最简angularJS webstorm代码提示 在 head 里面添加:<script src="https://ajax.googleapis.com/ajax/libs/angu ...
- android 入门-生命周期 activity
生命周期 activity http://blog.csdn.net/android_tutor/article/details/5772285 http://www.cnblogs.com/John ...
- hdu 4010 动态树 @
kuangbin模板题,看起来十分高大上 /* *********************************************** Author :kuangbin Created Tim ...
- python-logging-日志系统
有时候需要记录日志,典型的出现在web程序或者服务器中,需要与正在运行的程序交互或者得知里面正在运行的信息 最近在倒腾webservice,使用spyne模块进行打包服务,很多实例代码也都用到了这个l ...
- js高级技巧之高级定时器
实际上,浏览器负责进行排序,指派某段代码在某个时间点运行的优先级. 可以吧js想象成在时间线上运行的. JavaScript中没有任何代码是立刻执行的,但一旦进程空闲则尽快执行. 1.重复的定时器: ...
- wcf,socket,数据传输方式
WCF的最终目标是通过进程或不同的系统.通过本地网络或是通过Internet收发客户和服务之间的消息. WCF合并了Web服务..net Remoting.消息队列和Enterprise Servic ...
- Angular跨域
Angular 跨域很简单,记住格式就好,有一些细节的东西需要跟后台商量的 比如地址栏的callback前面是&还是?跨域的原理请参考<jsonp跨域> Angular 跨域代码 ...
- MyEclipse代码自动补全设置
1.打开 Eclipse -> Window -> Perferences -> Java -> Editor -> Content Assist,在右边最下面一栏找到 ...
- storm进程正常运行一段时间shut down,运维方式
storm启动一段时间后,无征兆的停止了,然后nimbus,supervisor,ui所有的worker都stop了. 我用的storm是0.8.2版本的 nimbus中留下的log如下 -- :: ...
- qq邮箱邮我组件
http://openmail.qq.com/cgi-bin/qm_help_mailme?sid=uvkgSu7e0aOrc0Qc&t=open_mailme 邮我 使用"邮我&q ...