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简单例子的更多相关文章

  1. jquery ajax跨域请求后台的简单例子

    一.简介AJAX 是与服务器交换数据的技术,它在不重载全部页面的情况下,实现了对部分网页的更新. ajax() 方法通过 HTTP 请求加载远程数据. 该方法是 jQuery 底层 AJAX 实现.简 ...

  2. jquery ajax请求后台 的简单例子

    jQuery.ajax(url,[settings]) 概述 通过 HTTP 请求加载远程数据. jQuery 底层 AJAX 实现.简单易用的高层实现见 $.get, $.post 等.$.ajax ...

  3. NodeJS+Express+Socket.io的一个简单例子

    关键字:NodeJS,Express,Socket.io. OS:Windows 8.1 with update pro. 1.安装NodeJS:http://nodejs.org/. 2.初始化一个 ...

  4. vue 父组件调用子组件方法简单例子(笔记)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. 使用nodegrass简单封装http请求例子

    1.项目中经常性的使用http发送请求处理数据.而大部分请求方式为get和post,于是对http请求进行封装,提供代码的利用率. 2.nodegress是nodejs的一个请求工具. 具体步骤及代码 ...

  6. CANoe 入门 Step by step系列(三)简单例子的剖析【转】

    最好的学习方式是什么?模仿.有人会问,那不是山寨么?但是我认为,那是模仿的初级阶段,当把别人最好的设计已经融化到自己的血液里,变成自己的东西,而灵活运用的时候,才是真正高级阶段.正所谓画虎画皮难画骨. ...

  7. 【转载】CANoe 入门 Step by step系列(三)简单例子的剖析

    来源:http://www.cnblogs.com/dongdonghuihui/archive/2012/09/26/2704623.html 最好的学习方式是什么?模仿.有人会问,那不是山寨么?但 ...

  8. Spring框架系列(2) - Spring简单例子引入Spring要点

    上文中我们简单介绍了Spring和Spring Framework的组件,那么这些Spring Framework组件是如何配合工作的呢?本文主要承接上文,向你展示Spring Framework组件 ...

  9. AgileEAS.NET SOA 中间件平台.Net Socket通信框架-简单例子-实现简单的服务端客户端消息应答

    一.AgileEAS.NET SOA中间件Socket/Tcp框架介绍 在文章AgileEAS.NET SOA 中间件平台Socket/Tcp通信框架介绍一文之中我们对AgileEAS.NET SOA ...

随机推荐

  1. angularjs实战

    1.指令  transclude 保留原来的内容 replace 去掉<my-directive>指令 <script src="http://apps.bdimg.com ...

  2. PHPCMS-V9 获取一级栏目、二级栏目、三级栏目

    <!-- 获取一级栏目 -->{pc:content action=" siteid="$siteid" order="listorder ASC& ...

  3. ASP.NET 5探险(8):利用中间件、TagHelper来在MVC 6中实现Captcha

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:由于ASP.NET 5及MVC 6是一个微软全新重新的Web开发平台,之前一些现有的验 ...

  4. 关于RTP负载类型及时间戳介绍

    转自:http://www.360doc.com/content/11/1018/13/1016783_157133781.shtml 首 先,看RTP协议包头的格式: 前12个字节在每一个RTP p ...

  5. 时间:UTC时间、GMT时间、本地时间、Unix时间戳

    转自:http://blog.csdn.net/u012102306/article/details/51538574 1.UTC时间 与 GMT时间 我们可以认为格林威治时间就是时间协调时间(GMT ...

  6. Web开发基本准则-55实录-Web访问安全

    Web开发工程师请阅读下面的前端开发准则,这是第一部分,强调了过去几年里我们注意到的Web工程师务须处理的Web访问安全基础点.尤其是一些从传统软件开发转入互联网开发的工程师,请仔细阅读,不要因为忽视 ...

  7. 如何离线下载Chrome的安装包

    打开Chrome官网(自行搜索)点击下载后下载的是联网安装包,这对部分上网不方便的用户造成了一定的麻烦. http://www.google.cn/chrome/browser/desktop/ind ...

  8. Java可变参数讲解

    如果实现的多个方法,这些方法里面逻辑基本相同,唯一不同的是传递的参数的个数,可以使用可变参数可变参数的定义方法 数据类型...数组的名称,这个数组存储传递过来的参数,类似JavaScript注意点:  ...

  9. JMeter参数化(一)

    JMeter参数化的4种方法:

  10. OAuth2.0 在 SSO中的应用~

    关于OAuth2.0的介绍,请看下面链接(讲的挺好的): http://blog.csdn.net/seccloud/article/details/8192707 我的理解: 一共四个角色,A:Cl ...