用HttpReports快速搭建API分析平台
HttpReports
簡(jiǎn)單介紹
HttpReports 是 .Net Core下的一個(gè)Web組件,適用于 WebAPI 項(xiàng)目和 API 網(wǎng)關(guān)項(xiàng)目,通過(guò)中間件的形式集成到您的項(xiàng)目中, 通過(guò)HttpReports,可以讓開(kāi)發(fā)人員快速的搭建出一個(gè) API 性能分析的基礎(chǔ)報(bào)表網(wǎng)站。
主要包含 HttpReports 中間件 和 HttpReports.Web 報(bào)表項(xiàng)目:
HttpReports:https://github.com/SpringLeee/HttpReports
HttpReports.Web:https://github.com/SpringLeee/HttpReportsWeb
如何使用
1.運(yùn)行 HttpReports.Web
在github下載 HttpReports.Web 項(xiàng)目,項(xiàng)目地址:https://github.com/SpringLeee/HttpReportsWeb, Web項(xiàng)目是.Net Core MVC 項(xiàng)目,使用三層實(shí)現(xiàn)。
下載完成后,在VS中打開(kāi),然后還原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"
}
}
主要參數(shù):
HttpReports:配置一個(gè)可用的連接字符串;
DBType:數(shù)據(jù)庫(kù)類型,支持SqlServer和MySql;
UserName: Web項(xiàng)目的登錄名;
Password: Web項(xiàng)目的登錄密碼;
假設(shè)我們使用的是SqlServer 數(shù)據(jù)庫(kù),需要先配置ConnectionStrings,然后手動(dòng)創(chuàng)建數(shù)據(jù)庫(kù) HttpReports(Web項(xiàng)目會(huì)根據(jù)數(shù)據(jù)庫(kù)自動(dòng)創(chuàng)建表,并且在第一次運(yùn)行的時(shí)候Mock一些數(shù)據(jù) ),我們直接F5運(yùn)行項(xiàng)目, 沒(méi)有問(wèn)題的話,會(huì)直接跳到登錄頁(yè)面,輸入用戶名密碼 admin 123456,登錄后,應(yīng)該可以看到下面的頁(yè)面
現(xiàn)在可以看到項(xiàng)目有 auth,payment,sms 三個(gè)服務(wù)節(jié)點(diǎn),服務(wù)節(jié)點(diǎn)的定義如下:
| 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 | 如果沒(méi)有前綴的話,就是default節(jié)點(diǎn) |
如果你的項(xiàng)目是單個(gè)WebAPI項(xiàng)目,那么服務(wù)節(jié)點(diǎn)只有一個(gè) default,如果你的項(xiàng)目是 GateWay 網(wǎng)關(guān)項(xiàng)目,那么Web項(xiàng)目就可以讀取到多個(gè)服務(wù)節(jié)點(diǎn),比如 auth 認(rèn)證,payment支付等。
2.在API項(xiàng)目中使用
首先要?jiǎng)h除 Web 項(xiàng)目的Mock數(shù)據(jù),打開(kāi)數(shù)據(jù)庫(kù) HttpReports,打開(kāi)表 RequestInfo,清空數(shù)據(jù),執(zhí)行Sql
Delete * From [HttpReports].[dbo].[RequestInfo]配置數(shù)據(jù)庫(kù)連接字符串
HttpReports 適用單個(gè)API項(xiàng)目和網(wǎng)關(guān)項(xiàng)目,這里使用 Ocelot網(wǎng)關(guān)項(xiàng)目為例.
我們打開(kāi)appsetting.json, 配置數(shù)據(jù)庫(kù)連接字符串,需要和Web項(xiàng)目一致
Nuget引用HttpReports
安裝nuget包?HttpReports?,打開(kāi)StartUp
在ConfigureServices 方法下添加:
services.AddHttpReportsMiddlewire();如果是MySql數(shù)據(jù)庫(kù),則添加:
csharp services.AddHttpReportsMiddlewire(options =>{ options.DBType = DBType.MySql; });
加入到 Configure 方法 ,需要放在 app.UseMVC() 或者 app.UseOcelot().Wait() 的前面,要不然不生效
app.UseHttpReportsMiddlewire();ConnectionStrings 配置的連接字符串和數(shù)據(jù)庫(kù)類型要一致,全部完成了以后,我們就可以使用 Web 項(xiàng)目了。
項(xiàng)目環(huán)境基本要求
WebAPI或者網(wǎng)關(guān)項(xiàng)目支持的.Net Core 版本 2.2, 3.0, 3.1;
HttpReports.Web 的core版本為 2.2
性能事項(xiàng)
HttpReports 中間件是異步操作,所以對(duì)api接口請(qǐng)求的時(shí)間可以忽略,但是由于實(shí)質(zhì)使用的是數(shù)據(jù)庫(kù)存儲(chǔ),所以要注意直接請(qǐng)求到數(shù)據(jù)庫(kù)的壓力。
下面是用PostMan做的一個(gè)簡(jiǎn)單測(cè)試:
WebAPI內(nèi)的方法:
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分別對(duì)添加中間件和不添加中間件的 API請(qǐng)求 1000次,每300ms請(qǐng)求一次
| 原生API | 1000 | 32.535 |
| 使用中間件 | 1000 | 32.899 |
總結(jié)
HttpReports 的實(shí)現(xiàn)原理并不復(fù)雜,如果你想給你的 WebAPI項(xiàng)目,快速的添加一套分析系統(tǒng) ,那么使用HttpReports 是一個(gè)不錯(cuò)的選擇
聯(lián)系作者
如果您在使用過(guò)程中遇到了什么問(wèn)題或者有好的建議的話,可以添加我的微信,希望可以幫助到。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的用HttpReports快速搭建API分析平台的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 在Windows系统中构建还原ASP.N
- 下一篇: 他,TypeScript GitHub