1. 程式人生 > >使用HttpReports快速搭建API分析平臺

使用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 是一個不錯的選擇

聯絡作者

如果您在使用過程中遇到了什麼問題或者有好的建議的話,可以新增我的微信,希望可以幫助到您