首页 > 编程语言 >#yyds干货盘点#node 封装 http请求

#yyds干货盘点#node 封装 http请求

时间:2023-08-13 21:33:47浏览次数:53  
标签:node yyds http function res url error var data

var http = require("http");
var urlUtil = require('url');
var file = require("./file");
var querystring = require('querystring');
var HttpUtil = {
    //get提交url,返回html数据
    get : function(url,success,error){
        http.get(url,function(res){
            var result = "";
            res.setEncoding("UTF-8");
            res.on("data",function(data){
                result += data;
            });
            res.on('error',error);
            res.on('end',function(){
                success(result);
            });
        }).on('error',this.requestError);
    },
    post : function(hostname,port,path,body,acceptType,contentType,success,error){
        var bodyString = "";
        if(body!=null && contentType == "application/json"){
            bodyString = JSON.stringify(body);
        }
        else if(body!=null && contentType == "application/x-www-form-urlencoded"){
            bodyString = querystring.stringify(body);
        }
        var opts = {
            hostname : hostname,
            port : port,
            path : path,
            method: 'post',
            headers : {
                'Accept':acceptType,
                'Content-Type':contentType,
                'Content-Length':bodyString.length
            }
        }
 
        var req = http.request(opts,function(res){
            
            var result = "";
            res.setEncoding("UTF-8");
            res.on("data",function(data){
                result += data;
            });
            res.on('error',error);
            res.on('end',function(){
                success(result);
            });
 
        });
        req.on('error',this.requestError);
        file.writeInFile(req);
        req.write(bodyString);
        req.end();
    },
    //提交表单参数,并返回html内容
    postAndReturnHtml : function(url,body,success,error){
        var urlConfig = urlUtil.parse(url);
        var contentType = "application/x-www-form-urlencoded";
        var acceptType = "text/html";
        this.post(urlConfig.hostname,urlConfig.port,urlConfig.path,body,acceptType,contentType,success,this.responseError);
    },
    //get提交url参数,并返回json数据
    getAndReturnJson : function(url,success,error){
        this.get(url,function(data){
            var data = JSON.parse(data);
            success(data);
        },this.responseError(error));
    },
    //提交json参数,并返回json
    postAndReturnJson : function(url,body,success,error){
        var contentType = "application/json";
        var acceptType = "application/json";
        var urlConfig = urlUtil.parse(url);
        this.post(urlConfig.hostname,urlConfig.port,urlConfig.path,body,acceptType,contentType,function(data){
            var data = JSON.parse(data);
            success(data);
        },this.responseError(error));
    },
    requestError : function(error){
        console.log("请求失败--"+error.message);
    },
    responseError : function(error){
        return  error || function(e){
            console.log("响应失败--"+e.message);
        };
    }
}
 
module.exports = HttpUtil;

标签:node,yyds,http,function,res,url,error,var,data
From: https://blog.51cto.com/u_11365839/7069657

相关文章

  • Spring Web : FormHttpMessageConverter
    概述FormHttpMessageConverter是SpringWeb提供的用于读写一般HTML表单数据的HttpMessageConverter实现类,也可以写multipart数据,但是不能读取multipart数据。具体来讲,FormHttpMessageConverter可以:读写application/x-www-form-urlencoded媒体类型数据:MultiValueMapMultiValueM......
  • mysql数据库中有表,但是抛异常,Table 'test.WORRK_NODE' donesn't exist
    原因:表名是大写的,linux上的msyql默认区分大小写问题,本地的mysql不会出现这个问题解决一:修改sql语句,变成小写库名,表名方法二:把原来表删了,重新建表,建立表时指定字符集utf8_general_ci,该字符集对大小写不敏感 解决三:开启忽略大小写,需要修改/etc/my.cnf配置文件 注意:这个配......
  • 基于node.js的健身房会员管理系统
    随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。健身房会员管理系统,主要的模块包括首页、个人中心、会员管理、教练管理、场地信息管理、课程信息管理、订单信息管理、预约信息管理、训练情况管理、留言板管理、系统管......
  • HTTP/1.1,HTTP/2和HTTP/3的区别
    https://www.xiaolincoding.com/network/2_http/http_interview.html#http-1-1、http-2、http-3-演变视频:https://www.bilibili.com/video/BV1vv4y1U77y/?spm_id_from=333.337.search-card.all.click&vd_source=46d50b5d646b50dcb2a208d3946b1598......
  • iOS 如何给http链接请求加上cookie
    先看https是怎么携带cookie的:varproperties:[HTTPCookiePropertyKey:Any]=[:]properties[.name]="key"properties[.path]="/"properties[.value]="value"properties[.secure]="true"properties[.domain]=".abc.c......
  • 常用的 http 状态码有哪些?
    在我们进行网页,网址的访问过程中,http,https都是我们主要使用到的协议,在使用这协议的时候,对于他的协助状态,我们是需要完全正确理解,从而才有可能更好的理解这套协议的初衷。常用的HTTP状态码包括:1xx信息性状态码(Informational):100Continue101SwitchingProtocols2xx......
  • #yyds干货盘点# LeetCode程序员面试金典:数组中的第K个最大元素
    题目:给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例1:[3,2,1,5,6,4],示例 2:[3,2,3,1,2,4,5,5,6],代码实现:class......
  • #yyds干货盘点# LeetCode程序员面试金典:查找和最小的 K 对数字
    1.简述:给定两个以 非递减顺序排列 的整数数组 和  , 以及一个整数  。nums1nums2k定义一对值 ,其中第一个元素来自 ,第二个元素来自  。(u,v)nums1nums2请找到和最小的  个数对 , k(u1,v1) (u2,v2)(uk,vk) 示例1:输入:nums1=[1,7,11],nums2=[2,4,6],k=3......
  • NodeJS系列(9)- Next.js 框架 (二)
    在“NodeJS系列(8)-Next.js框架(一)”里,我们简单介绍了Next.js的安装配置,创建了nextjs-demo项目,讲解和演示了Next.js项目的运行、路由(Routing)、页面布局(Layout)等内容。本文继续在nextjs-demo项目基础上,讲解和演示国际化(i18n)、中间件(Middleware)等内容。NextJS:h......
  • 关于 HTTP 响应头字段 Strict-Transport-Security
    在Chrome开发者工具的Network面板里,当观察到一个请求的ResponseHeader字段名称为"Strict-Transport-Security",并且其值为"max-age=31536000;includeSubDomains;preload"时,这代表网站启用了严格传输安全(StrictTransportSecurity,HSTS)策略。HSTS是一种安全机制,旨在提高网站的安......