node后端代理接口

node后端代理接口

方式一

var http = require('http')
var app = http.createServer(function (req, res) { // 访问服务时候执行
    if (req.url === '/') {
        // 服务器向服务发送请求;叫做后端代理服务器;是不存在跨域问题
        // http.get() 向另一个服务器发送气请求
        // 参一请求地址;请求参数在请求地址上进行拼接的
        // 请求完毕后处理
        http.get('http://www.baidu.com/', function (data) {
            // console.log(data);
            // 1:代理请求成功如何处理
            var str = '';
            // 监听数据变化事件
            data.on('data', function (clumh) { // 回参是另一台服务器 响应的【变化的数据】
                console.log(clumh);
                str += clumh;
            })
            data.on('end', function () {
                // 当响应数据结束后触发该事件
                // console.log(str);
                res.end(str)
            })
        })
    }else{
        res.end('出错了')
    }

})
app.listen(3000, function () {
    console.log('node is ok');

})


方式二

// 因为拼接字符串提麻烦了;所以通过内置模块querystring 完成后端代理服务器
var http = require('http');
var qs = require('querystring');

// 请求参数
var parms = {
    a: '11',
    b: '22'
}

var content = qs.stringify(parms);// 将对象变为字符串  a=11&b=22
// console.log(res);
// var obj = qs.parse(res); // 将字符串变为对象
// console.log(obj);
var options = {
    hostname: 'localhost', // ip  
    port: 8000,  // 端口号
    path: '/test', // 接口地址
    method: 'get',  // 请求方式
    headers: {  // 设置请求头
        'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
    }
};

var app = http.createServer(function (req, res1) {
    if (req.url === '/') {
        // http.require() 想服务器发送请求;参一:对象;接口的配置信息 
        var req1 = http.request(options, function (res) {
            // res 是发送请求 成功后响应的对象
            console.log('STATUS: ' + res.statusCode); // 状态吗;200成功
            console.log('HEADERS: ' + JSON.stringify(res.headers)); //
            res.setEncoding('utf8');// 设置头部信息
            // 监听qs2服务器响应数据变化的事件
            res.on('data', function (chunk) { // chumk 是服务器响应的数据
                console.log('BODY: ' + chunk);
                res1.end(chunk);
            });
        })

        console.log(req1);
        
        // 监听请求过程过程中的错误事件
        req1.on('error', function (e) {  
            console.log('problem with request: ' + e.message);  
        });  
          
        // 将数据写入请求体
        req1.write(content);//注意这个地方  
          
        req1.end();
    }
})
app.listen(3000, function () {
    console.log('qs1 is ok');

})

方式三 request 中间件

// request 租用 node 代理服务器的模块
var request = require('request');
var fs = require('fs')

var http = require('http');
var app = http.createServer(function (req, res) {

    //request 作用发送请求;参一:请求行配置信息;请求地址;请求参数请求方式等
    //----> 参二:是响应处理函数
    request('https://www.baidu.co, function (error, response, body) {
        // ---> error 错误
        console.log(body)//打印百度首页html内容
        res.end(body)
    })
    // 获取百度Logo 并且保存到本地; 
    request('https://www.baidu.com/img/bd_logo1.png').pipe(fs.createWriteStream('a.png')) 
})
app.listen(3000,function(){
    console.log('ok');
    
})



// request({
//     url: url,//请求路径
//     method: "POST",//请求方式,默认为get
//     headers: {//设置请求头
//         "content-type": "application/json",
//     },
//     body: JSON.stringify(requestData)//post参数字符串
// }, function(error, response, body) {
//     if (!error && response.statusCode == 200) {
//     }
// }); 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值