用HttpReports快速搭建API分析平台

HttpReports

简单介绍

HttpReports 是 .Net Core下的一个Web组件,适用于 WebAPI 项目和 API 网关项目,通过中间件的形式集成到您的项目中, 通过HttpReports,可以让开发人员快速的搭建出一个 API 性能分析的基础报表网站。

主要包含 HttpReports 中间件 和 HttpReports.Web 报表项目:

HttpReports:https://github.com/SpringLeee/HttpReports

HttpReports.Web:https://github.com/SpringLeee/HttpReportsWeb

如何使用

1.运行 HttpReports.Web

在github下载 HttpReports.Web 项目,项目地址:https://github.com/SpringLeee/HttpReportsWeb, Web项目是.Net Core MVC 项目,使用三层实现。

下载完成后,在VS中打开,然后还原NuGet程序包,完成后首先 appsettings.json

appsettings.json

{
"ConnectionStrings": {
"HttpReports": "Max Pool Size = 512;server=.;uid=sa;pwd=123456;database=HttpReports;"
},
"HttpReportsConfig": {
"DBType": "SqlServer",
"UserName": "admin",
"Password": "123456"
}
}

主要参数:

  • HttpReports:配置一个可用的连接字符串;

  • DBType:数据库类型,支持SqlServer和MySql;

  • UserName: Web项目的登录名;

  • Password: Web项目的登录密码;

假设我们使用的是SqlServer 数据库,需要先配置ConnectionStrings,然后手动创建数据库 HttpReports(Web项目会根据数据库自动创建表,并且在第一次运行的时候Mock一些数据 ),我们直接F5运行项目, 没有问题的话,会直接跳到登录页面,输入用户名密码 admin 123456,登录后,应该可以看到下面的页面

现在可以看到项目有 auth,payment,sms 三个服务节点,服务节点的定义如下:

请求地址服务节点说明
https://www.abc.com/auth/api/user/loginauth
https://www.abc.com/log/api/user/loginlog
https://www.abc.com/api/user/logindefault如果没有前缀的话,就是default节点

如果你的项目是单个WebAPI项目,那么服务节点只有一个 default,如果你的项目是 GateWay 网关项目,那么Web项目就可以读取到多个服务节点,比如 auth 认证,payment支付等。

2.在API项目中使用

首先要删除 Web 项目的Mock数据,打开数据库 HttpReports,打开表 RequestInfo,清空数据,执行Sql

  Delete * From [HttpReports].[dbo].[RequestInfo]
配置数据库连接字符串

HttpReports 适用单个API项目和网关项目,这里使用 Ocelot网关项目为例.

我们打开appsetting.json, 配置数据库连接字符串,需要和Web项目一致

Nuget引用HttpReports

安装nuget包 HttpReports ,打开StartUp

在ConfigureServices 方法下添加:

services.AddHttpReportsMiddlewire();

如果是MySql数据库,则添加:
csharp services.AddHttpReportsMiddlewire(options =>{ options.DBType = DBType.MySql; });

加入到 Configure 方法 ,需要放在 app.UseMVC() 或者 app.UseOcelot().Wait() 的前面,要不然不生效

app.UseHttpReportsMiddlewire();

ConnectionStrings 配置的连接字符串和数据库类型要一致,全部完成了以后,我们就可以使用 Web 项目了。

项目环境基本要求

WebAPI或者网关项目支持的.Net Core 版本 2.2, 3.0, 3.1;

HttpReports.Web 的core版本为 2.2

性能事项

HttpReports 中间件是异步操作,所以对api接口请求的时间可以忽略,但是由于实质使用的是数据库存储,所以要注意直接请求到数据库的压力。

下面是用PostMan做的一个简单测试:

WebAPI内的方法:

        public string Sql1()
{
SqlConnection con = new SqlConnection(
"Max Pool Size = 512;server=.;uid=sa;pwd=123456;database=HyBasicData;");

var list1 = con.Query(" select * from [HyBasicData].[dbo].[Customers] ");

var list2 = con.Query(" select * from [HyBasicData].[dbo].[Customers] ");

var list3 = con.Query(" select * from [HyBasicData].[dbo].[Customers] ");

return list1.Count().ToString();
}

PostMan分别对添加中间件和不添加中间件的 API请求 1000次,每300ms请求一次

说明请求次数平均响应时间
原生API100032.535
使用中间件100032.899

总结

HttpReports 的实现原理并不复杂,如果你想给你的 WebAPI项目,快速的添加一套分析系统 ,那么使用HttpReports 是一个不错的选择

联系作者

如果您在使用过程中遇到了什么问题或者有好的建议的话,可以添加我的微信,希望可以帮助到。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/312757.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PAT(乙级) 1001 害死人不偿命的(3n+1)猜想 C++

卡拉兹(Callatz)猜想: 对任何一个正整数 n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把 (3n1) 砍掉一半。这样一直反复砍下去,最后一定在某一步得到 n1。卡拉兹在 1950 年的世界数学家大会上公布了…

他,TypeScript GitHub Star 上海第一,全国第四!GitHub 总标星超两万!

前两天和老同学羡辙(Apache Echarts 核心开发、百度最美工程师)聊天。她分享了一个 GitHub 排名的网站给我。http://git-awards.com/users?typecity&languagetypescript&cityShanghai我看了下 TypeScript star 数量的排名。哇噻!厉害…

PAT(乙级) 1002 写出这个数 (20point(s)) Python

读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。 AC代码 i input() count 0 for j in i:count count int(j) d {"0":"ling","1":"yi","2":"er","3"…

[原]排错实战——拯救加载调试符号失败的IDA

本文之前发表的时候有些问题,作为强迫症患者的我又重新编辑后再次发表。如果您已经看过,请忽略。望见谅。缘起 最近想借助IDA逆向一个函数。在windows下,调试器(比如vs, windbg)可以通过调试符号(PDB&#…

数据结构 旅游规划(Dijkstra+Dfs)

题目: 有了一张自驾旅游路线图,你会知道城市间的高速公路长度、以及该公路要收取的过路费。现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径。如果有若干条路径都是最短的,那么需要输出最便宜的一条路…

如何运用DDD - 实体

概述本文将介绍领域驱动设计(DDD)战术模式中另一个常见且非常重要的概念 - 实体。相对战术模式中其他的一些概念(例如 值对象、领域服务等)来说,实体应该比较容易让人理解和运用。但是我们如何去发现所在领域中的实体呢…

数据结构 最大堆和最小堆

前言: 关于最大堆和最小堆的题目,我做过了很多次,但是好像没有一个是完全独立AC的。2021春季PAT考试的前一天,天梯赛校内赛还专门考了最小堆,我复习了一下,结果第二天PAT考了最大堆,又是没做出来…

Natasha v2.5.4 版与运行时实战

文章转载授权级别:BNatasha 是一个十分便捷的动态构建库,支持.NET Standard2.0 / Core3.0 ; 比起繁杂的 IL 指令和 Expression 的众多 API , Natasha 的构建方式更加友好简洁, 基于 Natasha 可以让动态工作变得傻瓜,简单&#xf…

数据结构 堆中的路径(最小堆)

题目: 将一系列给定数字插入一个初始为空的小顶堆H[ ]。随后对任意给定的下标i,打印从H[i]到根结点的路径。 输入格式: 每组测试第1行包含2个正整数N和M(≤1000),分别是插入元素的个数、以及需要打印的路径条数。下一行给出区间[-10000, 100…

.Net Core3.1下使用Swagger搭建web api项目

前言:微软于前天发布.net core 3.1正式版,并将长期支持3.1。所以我听到这个消息后就急忙下载.net core 3.1的SDK和Runtime,应该是公司最先用3.1的攻城狮了????。OK!废话少说,今天的目的是基于.net core 3.1建一个web api的项目先下载.net…

一个值得学习的WPF开源项目

项目介绍此项目应用了Prism MVVM框架,项目展示数据来源于其他服务程序,使用的WebAPI通信,如果要正常运行此程序,需要您自己做一个WebAPI程序,由API接口提供数据驱动,其实直接查看代码最直接,有需…

程序员修神之路--打通Docker镜像发布容器运行流程

菜菜哥,我看了一下docker相关的内容,但是还是有点迷糊还有哪不明白呢?如果我想用docker实现所谓的云原生,我的项目该怎么发布呢?这还是要详细介绍一下docker了Docker 是一个开源的应用容器引擎,基于 Go 语言…

PTA 三足鼎立 (lower_bound()+upper_bound())

当三个国家中的任何两国实力之和都大于第三国的时候,这三个国家互相结盟就呈“三足鼎立”之势,这种状态是最稳定的。 现已知本国的实力值,又给出 n 个其他国家的实力值。我们需要从这 n 个国家中找 2 个结盟,以成三足鼎立。有多少…

用.NET解索尼相机ARW格式照片

用.NET解索尼相机ARW格式照片目前常用的照片格式是 .jpg,它只能提供 8bit的色彩深度,而目前主流的相机都能提供高达 12bit- 14bit的色彩深度,动态范围和后期处理能力也大大增加,这也是为什么不少摄影爱好者会优先使用相机提供原始…

天梯赛 喊山 bfs

喊山,是人双手围在嘴边成喇叭状,对着远方高山发出“喂—喂喂—喂喂喂……”的呼唤。呼唤声通过空气的传递,回荡于深谷之间,传送到人们耳中,发出约定俗成的“讯号”,达到声讯传递交流的目的。原来它是彝族先…

ASP.NET Core on K8S深入学习(10)K8S包管理器Helm-Part 1

本篇已加入《.NET Core on K8S学习实践系列文章索引》,可以点击查看更多容器化技术相关系列文章。关于HelmWhy Helm?虽然K8S能够很好地组织和编排容器,但是缺少一个更高层次的应用打包工具,而Helm就是专门干这个事的。通过Helm能够…

520 钻石争霸赛 7-8浪漫侧影(二叉树的遍历)

“侧影”就是从左侧或者右侧去观察物体所看到的内容。例如上图中男生的侧影是从他右侧看过去的样子,叫“右视图”;女生的侧影是从她左侧看过去的样子,叫“左视图”。 520 这个日子还在打比赛的你,也就抱着一棵二叉树左看看右看看…

依赖注入在 dotnet core 中实现与使用:2 使用 Extensions DependencyInjection

既然是依赖注入容器,必然会涉及到服务的注册,获取服务实例,管理作用域,服务注入这四个方面。服务注册涉及如何将我们的定义的服务注册到容器中。这通常是实际开发中使用容器的第一步,而容器本身通常是由框架来实例化的…

520 钻石争霸赛 7-6 矩阵列平移(循环)

给定一个 nn 的整数矩阵。对任一给定的正整数 k<n&#xff0c;我们将矩阵的偶数列的元素整体向下依次平移 1、……、k、1、……、k、…… 个位置&#xff0c;平移空出的位置用整数 x 补。你需要计算出结果矩阵的每一行元素的和。 输入格式&#xff1a; 输入第一行给出 3 个…

拿 C# 搞函数式编程 - 2

前一阵子在写 CPU&#xff0c;导致一直没有什么时间去做其他的事情&#xff0c;现在好不容易做完闲下来了&#xff0c;我又可以水文章了哈哈哈哈哈。有关 FP 的类型部分我打算放到明年再讲&#xff0c;因为现有的 C# 虽然有一个 pattern matching expressions&#xff0c;但是没…