使用nodegrass简单封装http请求例子
1、项目中经常性的使用http发送请求处理数据。而大部分请求方式为get和post,于是对http请求进行封装,提供代码的利用率。
2、nodegress是nodejs的一个请求工具。
具体步骤及代码如下:
1、安装nodegrass,执行npm install nodegrass命令。
2、封装过程中存在使用数据集合工具underscore工具,先进行安装。
3、nodegrass中post及get代码如下:
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";
} } //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";
}
}
4、http的具体封装,代码如下:
var ng = require('nodegrass');
var $ = require('underscore'); var domain = 'http://www.*******.com'; exports.header = {
'Content-Type': 'application/x-www-form-urlencoded'
}; exports.get = function (url, data, success) {
ajax(url, 'get', data, success);
}; exports.post = function (url, data, success) {
ajax(url, 'post', data, success);
}; function ajax(url, httpMethod, data, success) {
var args = [function (res, status, headers) {
try {
var json = JSON.parse(res);
success(json, headers);
}
catch(ex) {
if(res.success)
console.log('ajax fail: %s', url);
}
}, exports.header]; if (httpMethod == 'get') {
args.unshift([
domain,
url,
'?',
$.map(data, function (v, k) {
return [k, v].join('=');
}).join('&')
].join(''));
}
else {
data._ = '';
args.unshift(domain + url);
args.push(data);
}
args.push('utf8');
ng[httpMethod].apply(ng, args).on('error', function () {
console.log('ajax error: %s', url);
});
}
根据node-grass中的具体post及get请求的代码,对ajax进行模仿封装。
1、一般为一个固定的URL前缀请求,直接domain定义。
2、每个请求都有固定的header标签。
3、http包含get、post请求两种方式。
4、http包含
url:请求地址,
httpMothed:请求方式(post,get)
data:请求数据
success:成功与否执行的回调函数
5、其中对data的拼接方式使用"?","&"字符进行拼接处理。
6、此外还须标明字符集为“utf8”的字符集
7、同时还有错误时所需要输出的错误信息提示。
具体调用方式示例,代码如下:
var ajax = require('./ajax');
ajax.post('/user/save', s, function (resp) {
if (!resp.success) {
console.log("error");
}
console.log("success");
});
如此可以轻松快速的模拟请求处理相应数据。
以上例子根据nodegrassAPI进行编写,如有不足之处,敬请原谅。
使用nodegrass简单封装http请求例子的更多相关文章
- swift开发之--简单封装Alamofire请求类以及简单使用SnapKit
以前在swift3的时候,写过类似的,那个时候还没有很成熟的网络请求类库,在这里,还是衷心感谢大神们的付出! 具体效果如下,先上图: 点击按钮的时候,请求数据,数据结构如下: { ; reason = ...
- 简单封装数据请求(iOS)
#import <Foundation/Foundation.h> //给block起 别名 //类型 void(^)(BOOL success , id data) //别名是 Comp ...
- 一个简单的 aiax请求例子
<!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content ...
- 简单封装axios api
可以在代码逻辑中写axios请求,处理请求结果,但是随着项目越来越大,代码会很繁琐,不容易维护,所以,可以把一些在所有请求中都要处理的逻辑抽取出来,封装成api方法.比如每次请求中都要判断是否有权限, ...
- python网页请求urllib2模块简单封装代码
这篇文章主要分享一个python网页请求模块urllib2模块的简单封装代码. 原文转自:http://www.jbxue.com/article/16585.html 对python网页请求模块ur ...
- Xamarin.Android之封装个简单的网络请求类
一.前言 回忆到上篇 <Xamarin.Android再体验之简单的登录Demo> 做登录时,用的是GET的请求,还用的是同步, 于是现在将其简单的改写,做了个简单的封装,包含基于Http ...
- 简单封装的ajax请求
简单封装了一个ajax请求,做一下统一处理,少写重复代码,只是一个初步的代码,没有经过优化. $.extend({ myAjax: function (option, rollBack) { var ...
- jQuery-实现简单的Ajax请求封装
封装的意义在于复用,在于减少重复的代码. 我在项目中做了简单的Ajax请求封装,实现方式如下: //封装Ajax请求 $.extend({ ajaxDirect:function(url,type,d ...
- Jquery Ajax简单封装(集中错误、请求loading处理)
Jquery Ajax简单封装(集中错误.请求loading处理) 对Jquery Ajax做了简单封装,错误处理,请求loading等,运用到项目中集中处理会很方便. 技术层面没有什么好说的,请求是 ...
随机推荐
- python 小练习之生成手机号码
需求分析: 1 将固定的号码段放到list中 如:136 137 180 183等等 2 随机取8个数字元素 3 将固定号码段与随机产生的元素拼接在一起 4 写入文件 import stringdef ...
- file和file文件流
**io流是程序中比较常用的功能,基本上涉及到文件上传下载的都要用到这功能,比如上传头像,上传附件等等. 对于一个java程序员来说,io流也是必须掌握的,因此这里对比较常用的或者说曾经用过的方法进行 ...
- SPI FLASH与NOR FLASH的区别?
1.SPI Flash (即SPI Nor Flash)是Nor Flash的一种: 2.NOR Flash根据数据传输的位数可以分为并行(Parallel)NOR Flash和串行(SPI)NOR ...
- HI3531网络tftp、nfs加载
ifconfig eth0 hw ether 00:00:23:34:45:66; ifconfig eth0 192.168.1.10 netmask 255.255.255.0; route a ...
- IE浏览器因缓存问题未能成功向后端发送请求的几个解决办法
这段时间前后端联调,解决IE.谷歌等浏览器兼容问题,真是让人有点焦头烂额,各种奇葩问题层出不穷,旧问题刚去,新麻烦又来,其中尤其以IE浏览器缓存的问题最多.有若干次都是因为这个缓存,使得前端的请求没有 ...
- R语言︱机器学习模型评价指标+(转)模型出错的四大原因及如何纠错
笔者寄语:机器学习中交叉验证的方式是主要的模型评价方法,交叉验证中用到了哪些指标呢? 交叉验证将数据分为训练数据集.测试数据集,然后通过训练数据集进行训练,通过测试数据集进行测试,验证集进行验证. 模 ...
- 如何开发jQuery插件
一:普及JQuery知识 知识1:用JQuery写插件时,最核心的方法有如下两个: $.extend(object) 可以理解为,为JQuery 类添加一个静态方法. $.fn.extend(obje ...
- hibernate学习(一)配置,导包
框架的作用 学过javaWeb基础的已经对web层 jsp servlet ,service 层 ,dao层的jdbc .DBUtils 有了很深的了解 并编写代码实现某种功能 为了提高开发 ...
- python 实现多层目录文件查找
本文针对多层目录下文件的查找. 利用 os模块的基本操作,并利用递归的思想实现了目录多层查找. 代码如下: import os #dir_name: 处理文件的起始目录 def count_file( ...
- httpclient的get带参不带参post带参不带参的简单应用
一,基础的的应用 1.1,get的无参请求 @Test public void doGet() throws Exception { //创建一个httpclient对象 CloseableHttpC ...