使用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进行编写,如有不足之处,敬请原谅。

时间: 2024-12-06 22:05:36

使用nodegrass简单封装http请求例子的相关文章

上海岳城科技一个简单的Ajax请求例子

Ajax不是一种新的编程语言,而是一种用于创建更好更快以及交互性更强的Web应用程序的技术.通过Ajax,您可以使用 JavaScript的XMLHttpRequest对象来直接与服务器进行通信.您可以在不重载页面的情况与 Web 服务器交换数据.在本文的例子中,我们将演示当用户向一个标准的HTML表单中输入数据时网页如何与web服务器进行通信. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &quo

对系统网络请求进行简单封装

AGConnectionNet对系统网络请求进行简单封装,可便利的进行网络请求,并将数据解析与网络请求封装在同一方法下,使用更加便利(JSON 解析采用自身解析方法, XML 解析采用第三方 ReadXML 进行解析). 方法具体参数说明 初始化方法:/*** 类方法,实例化当前数据请求对象 (单例)** @return 当前请求对象*/+ (instancetype)shareRequestData; 仅进行请求数据方法/*** 请求数据 (session 请求)** @param URLSt

Xamarin.Android之封装个简单的网络请求类

一.前言 回忆到上篇 <Xamarin.Android再体验之简单的登录Demo> 做登录时,用的是GET的请求,还用的是同步, 于是现在将其简单的改写,做了个简单的封装,包含基于HttpClient和HttpWebRequest两种方式的封装. 由于对这一块还不是很熟悉,所以可能不是很严谨. 二.先上封装好的代码 1 using System; 2 using System.Collections.Generic; 3 using System.IO; 4 using System.Json

Android简单封装类似JQuery异步请求

在android开发中经常会使用异步请求数据,通常会使用handler或者AsyncTask去做,handler 配合message 使用起来比较麻烦,AsyncTask 线程池只允许128个线程工作,会有溢出的问题,(当然一般情况不会有那么多线程同时工作的)所以写了这个代码,还望高手指正! [Java]代码 01 package com.xbl.task; 02 03 import java.io.BufferedReader; 04 import java.io.InputStream; 0

App 组件化/模块化之路——如何封装网络请求框架

App 组件化/模块化之路——如何封装网络请求框架 在 App 开发中网络请求是每个开发者必备的开发库,也出现了许多优秀开源的网络请求库.例如 okhttp retrofit android-async-http 这些网络请求库很大程度上提高程序猿的编码效率.但是随着业务的发展,App 变得越来越大,我们将这些网络请求库加入到项目中直接使用,对我们业务类的入侵是非常强的.如果要进行业务分离时,这些网络请求代码将是一个阻止我们进一步工作的绊脚石.对开发者来说是非常痛苦的. 因此我们构建的网络请求框

Anroid-async-http封装网络请求框架源码分析

Android-async-http开源项目可以是我们轻松的获取网络数据或者向服务器发送数据,使用起来非常简单, 这个网络请求库是基于Apache HttpClient库之上的一个异步网络请求处理库,网络处理均基于Android的非UI线程,通过回调方法处理请求结果. 主要特点:处理异步Http请求,并通过匿名内部类处理回调结果,Http异步请求均位于非UI线程,不会阻塞UI操作,通过线程池处理并发请求处理文件上传.下载,响应结果自动打包JSON格式. 一, Android-async-http

httpclient4.3简单封装

对httpclient4.3版本的一个简单封装,下面是代码 /**  * httputil工具类  *   * @author rex  */ public class HttpUtil {     private static CloseableHttpClient client;     private static BasicCookieStore cookieStore;     private static HttpGet get;     private static HttpPos

一个简单的回调(例子)

1.声明一个回调Interface: public interface CallBack { /** * 执行回调方法 * @param objects 将处理后的结果作为参数返回给回调方法 */ public void execute(Object... objects ); } 2.回调的地方继承回调,实现回调的方法: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamRe

自己简单封装spring容器

import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; /** * 服务提供核心类 * 该类的主要作用是加载beans.xml文件 * @author grace * */ public class ServiceProvinderCore { protected ApplicationCont