欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

使用HttpReports快速搭建API分析平台

程序员文章站 2022-06-13 08:36:59
HttpReports 简单介绍 HttpReports 是 .Net Core下的一个Web组件,适用于 WebAPI 项目和 API 网关项目,通过中间件的形式集成到您的项目中, 通过HttpReports,可以让开发人员快速的搭建出一个 API 性能分析的基础报表网站。 主要包含 HttpRe ......

httpreports

简单介绍

httpreports 是 .net core下的一个web组件,适用于 webapi 项目和 api 网关项目,通过中间件的形式集成到您的项目中, 通过httpreports,可以让开发人员快速的搭建出一个 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 项目,使用三层实现。

使用HttpReports快速搭建API分析平台

下载完成后,在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,登录后,应该可以看到下面的页面

使用HttpReports快速搭建API分析平台

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

请求地址 服务节点 说明
auth
log
default 如果没有前缀的话,就是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项目一致

使用HttpReports快速搭建API分析平台

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请求一次

说明 请求次数 平均响应时间
原生api 1000 32.535
使用中间件 1000 32.899

总结

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

联系作者

如果您在使用过程中遇到了什么问题或者有好的建议的话,可以添加我的微信,希望可以帮助到您
使用HttpReports快速搭建API分析平台