node后端代理接口
微信公众号 : 前端攻城狮
邮箱地址 yq979292@163.com
方式一
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) {
// }
// });