用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/login | auth | |
| https://www.abc.com/log/api/user/login | log | |
| https://www.abc.com/api/user/login | 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項目一致
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分析平台的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在Windows系统中构建还原ASP.N
- 下一篇: 他,TypeScript GitHub