node代理网络请求
server.js
var express = require('express')
var axios = require('axios')
var port = 9000;
var app = express();
var allowCrossDomain = function (req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
next();
};
app.use(allowCrossDomain);
var apiRoutes = express.Router()
apiRoutes.get('/getData', function (req, res) {
var url = req.query.reqUrl;
axios.get(url, {
headers: {
authority: 'https://xx.xx.xx/',
cookie: 'xxxxxxxxxxxxx'
},
params: req.query
}).then((response) => {
res.json(response.data)
}).catch((e) => {
console.log(e)
})
})
app.use(apiRoutes)
module.exports = app.listen(port, function (err) {
if (err) {
console.log(err)
return
}
console.log('Listening at http://localhost:' + port + '\n')
})
index.html
<!DOCTYPE html>
<html lang="en"> <head>
<meta charset="UTF-8">
<title></title>
<link rel="stylesheet" href="layui-v2.4.5/css/layui.css">
</head> <body>
<div class="container">
<div class="input-box" style="padding:20px 20px 0 20px;">
<form class="layui-form layui-row" lay-filter="">
<div class="layui-input-inline layui-col-xs12 layui-col-sm6 layui-col-md3 layui-col-lg3">
<input type="text" name="title" required lay-verify="required" placeholder="请输入relatedId" autocomplete="off" class="layui-input" id="input" value="5624669de0f55a5286003b95">
</div>
<div class="layui-input-inline" style="padding:5px 0 0 20px;">
<div class="layui-btn layui-btn-sm layui-btn-normal" id="confirm">搜索</div>
</div>
</form>
</div>
<div class="table-box" style="padding:0 20px;">
<table class="layui-table">
<colgroup>
<col width="400">
<col>
</colgroup>
<thead>
<tr>
<th>错误摘要</th>
<th>应用版本</th>
<th>最近发生时间</th>
<th>最后发生时间</th>
<th>错误次数</th>
<th>影响用户数</th>
</tr>
</thead>
<tbody id="templateTbody"></tbody>
</table>
</div>
</div>
<script id="tmpl" type="text/html">
{{# layui.each(d.data, function(index, item){ }}
<tr>
<td>{{item.summary}}</td>
<td>{{item.appVersion}}</td>
<td>{{item.firstHappenTime}}</td>
<td>{{item.lastHappenTime}}</td>
<td>{{item.happenTimes}}</td>
<td>{{item.affectUsers}}</td>
</tr>
{{# }); }}
{{# if(d.data.length === 0){ }}
暂无数据
{{# } }}
</script>
<script src="layui-v2.4.5/layui.js"></script>
<script src="index.js"></script>
</body> </html>
index.js
layui.use(['form', 'jquery', 'laytpl', 'layer'], function() {
var form = layui.form;
var $ = layui.jquery;
var laytpl = layui.laytpl;
var layer = layui.layer;
$('#confirm').on('click', function() {
var id = $.trim($('#input').val());
if (!id) {
layer.msg('请输入relatedId');
return;
};
var reqUrl = getUrl(id);
sendReq(reqUrl);
})
function getUrl(id) {
var date = new Date().toLocaleString();
var date1 = date.split(' ')[0].replace(/\//g, '');
var date2 = date.split(' ')[1].replace(/:/g, '');
return `https://mobile.umeng.com/ht/api/qb/v1/error/search?versions=&startDay=${date1}+000000&endDay=${date1}+${date2}&exValue=&exField=abstract&relatedId=${id}&errorClass=1&pageSize=120&page=1`;
}
function sendReq(reqUrl) {
console.log(reqUrl);
$.ajax({
url: 'http://127.0.0.1:9000/getData',
data: { reqUrl: reqUrl },
success: function(ret) {
if (ret.code === 200) {
var data = ret.data;
data.data = normalize(data.data);
var getTpl = tmpl.innerHTML;
var view = document.getElementById('templateTbody');
laytpl(getTpl).render(data, function(html) {
view.innerHTML = html;
});
} else {
layer.msg('请求错误:' + ret.msg);
}
}
})
}
function normalize(data) {
$.each(data, function(i, e) {
e.firstHappenTime = new Date(e.firstHappenTime).toLocaleString();
e.lastHappenTime = new Date(e.lastHappenTime).toLocaleString();
if (e.summary.indexOf('\n') > -1) {
e.summary = e.summary.slice(0, e.summary.indexOf('\n'));
}
})
return data;
}
Date.prototype.toLocaleString = function() {
function addZero(num) {
if (num < 10)
return "0" + num;
return num + '';
}
return this.getFullYear() + "/" + addZero(this.getMonth() + 1) + "/" + addZero(this.getDate()) + " " +
addZero(this.getHours()) + ":" + addZero(this.getMinutes()) + ":" + addZero(this.getSeconds());
};
})
node代理网络请求的更多相关文章
- AndroidInject项目使用动态代理增加对网络请求的支持
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/3540427.html AndroidInject项目是我写的一 ...
- [爬虫进阶]使用Jsoup取代你的一切网络请求方法(java,post,get,代理IP)
[爬虫进阶]使用Jsoup取代你的一切网络请求方法(java,post,get,代理IP) 原文链接:https://www.cnblogs.com/blog5277/p/9334560.html 原 ...
- android通过fiddler代理,抓取网络请求
安装fiddler过程省略 1, 2, 3, 4,手机需要跟电脑处于同一局域网,设置网络代理为电脑在局域网内的ip,端口为3步设置的port 5,电脑就可以通过fiddler监控手机的所有网络请求了( ...
- iOS_网络请求_代理方式
#pragma mark - 网络请求代理方式(异步) - (IBAction)DelegateButtonDidClicked:(UIButton *)sender { // 1.拼接 urlStr ...
- 十. Axios网络请求封装
1. 网络模块的选择 Vue中发送网络请求有非常多的方式,那么在开发中如何选择呢? 选择一:传统的Ajax是基于XMLHttpRequest(XHR) 为什么不用它呢?非常好解释配置和调用方式等非常混 ...
- Jest中Mock网络请求
Jest中Mock网络请求 最近需要将一个比较老的库修改为TS并进行单元测试,修改为TS还能会一点,单元测试纯粹是现学现卖了,初学Jest框架,觉得在单元测试中比较麻烦的就是测试网络请求,所以记录一下 ...
- Android之三种网络请求解析数据(最佳案例)
AsyncTask解析数据 AsyncTask主要用来更新UI线程,比较耗时的操作可以在AsyncTask中使用. AsyncTask是个抽象类,使用时需要继承这个类,然后调用execute()方法. ...
- 【Swift】Alamofile网络请求数据更新TableView的坑
写这篇BLOG前,有些话不得不提一下,就仅当发发恼骚吧... 今天下午为了一个Alamofire取得数据而更新TableView的问题,查了一下午的百度(360也是见鬼的一样),竟然没有一个简单明了的 ...
- nginx android app 慢网络请求超时
最近遇到了android 在慢网络下面请求服务器报 java.net.SocketException: recvfrom failed: ECONNRESET (Connection reset by ...
随机推荐
- hessian实战1
服务端: 1.新建MAVEN HessianServer 项目 2.新建接口 Basic public interface Basic { String hello(String name); Str ...
- SharePoint ULS Log Viewer 日志查看器
SharePoint ULS Log Viewer 日志查看器 项目描写叙述 这是一个Windows应用程序,更加轻松方便查看SharePoint ULS日志文件.支持筛选和简单的视图. 信息 这是一 ...
- bb=Discuz与 Discuz! X ,Discuz!NT区别
没加x的,仅仅是单独的论坛. 加了x的,模块加了很多了,门户,家园,排行榜,群组,都是Discuz! X上的,而Discuz!上没有,所以说Discuz! X更加适用于建设门户网 Discuz! X ...
- Html.DropDownListFor的选项值为字符型问题
我快要疯了.asp.net mvc的这个DropDownListFor,无论在服务器端如何设置,设置哪个值被选中,结果到了页面输出,选中值根本没有被选中,没有任何一个值被选中,下拉框只冷冰冰地显示一个 ...
- EasyPusher实现将asterisk直播流以RTSP转发实现通话直播与录像
本文转自博客:http://blog.csdn.net/jinlong0603/article/details/56047145 EasyPusher RTP直播推送介绍 EasyPusher是一个推 ...
- python自动化运维八:Ansible
Ansible是新出现的自动化运维工具,基于Python研发.糅合了众多老牌运维工具的优点实现了批量操作系统配置.批量程序的部署.批量运行命令等功能.仅需在管理工作站上安装ansible程序配置被管控 ...
- Mongoose学习(3)--设置环境变量
比如我一套代码数据库代码分为中文站和英文站,每个表中我都有一个site_code字段来区分, 两个站点部署在不同的人服务器,这个时候我们就用系统环境变量来区分, 下面直接在mac下设置环境变量 vim ...
- ABAP DEMO-2018
sap Program DEMO 介绍 Program Description BALVBT01 Example SAP program for displying multiple ALV repo ...
- Codeforces Beta Round #88 C. Cycle —— DFS(找环)
题目链接:http://codeforces.com/problemset/problem/117/C C. Cycle time limit per test 2.5 seconds memory ...
- word使用技巧
word文档左侧显示目录 word2007 选择word的视图,然后选择文档结构图 word中插入当前文档名称或者文档编辑时间 https://stackoverflow.com/questions ...