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

来源:https://www.cnblogs.com/myshowtime/archive/2019/12/07/12000522.html

HttpReports 簡單介紹 HttpReports 是 .Net Core下的一個Web組件,適用於 WebAPI 項目和 API 網關項目,通過中間件的形式集成到您的項目中, 通過HttpReports,可以讓開發人員快速的搭建出一個 API 性能分析的基礎報表網站。 主要包含 HttpRe ...


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

聯繫作者

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


您的分享是我們最大的動力!

更多相關文章
  • 《.Net 最佳實踐》 [作者] (美) Stephen Ritchie[譯者] (中) 黃燈橋 黃浩宇 李永[出版] 機械工業出版社[版次] 2014年01月 第1版[印次] 2018年01月 第1次 印刷[定價] 69.00元 (P001) 開發人員應該對任何稱之為“最佳實踐”的實踐保持一種懷疑 ...
  • 目前遇到的問題: 1.路徑區分大小寫及路徑用“/”,而不是常用的"\\"。 windows下路徑為:"xxxx\\yyyy",Linux路徑下為:"xxxx/yyyy" 使用 Path.Combine("xxxx","yyyy") 進行合併即可。 2.有時候就需要在 docker 容器里訪問宿主機提 ...
  • 安裝 參考文檔:https://docs.docker.com/install/linux/docker-ce/centos/#install-using-the-repository 前提條件 Docker 要求 CentOS 系統的內核版本高於 3.10,在終端輸入以下命令: uname -r ...
  • 相關模塊 1. AbpAspNetCoreModule 2. AbpAspNetCoreMvcModule 3. AbpAspNetCoreMvcContractsModule abp通過這三個模塊載入並配置了 asp.net core。,最主要的就是AbpAspNetCoreMvcModule模塊 ...
  • 原文:https://blogs.msdn.microsoft.com/mazhou/2017/06/06/c-7-series-part-3-default-literals/ C#的default關鍵字有兩種用法:一種是標記switch…case結構的預設分支(會匹配任意不被所有case條件匹配 ...
  • 安裝Docker CentOS 7 安裝 Docker 編寫Dockerfile 右鍵項目-》添加-》Docker 支持 選擇Linux 修改為如下: FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-stretch-slim AS base WORKDIR ...
  • 知識需要不斷積累、總結和沉澱,思考和寫作是成長的催化劑 梯子 一、鎖1、lock2、Interlocked3、Monitor4、SpinLock5、Mutex6、Semaphore7、Events1、AutoResetEvent2、ManualResetEvent3、ManualResetEvent ...
  • 大家好,這幾天試著從Github上拉取AspNetCore的源碼,嘗試著通過Visual Studio 打開,但是並不盡人意。我們需要去構建我們拉去的源代碼,這樣才可以通過VisualStudio可還原的項目。畢竟AspNetCore是一個巨型的項目集。 先決條件 在Windows中構建AspNet ...
一周排行
  • 比如要拆分“呵呵呵90909086676喝喝999”,下麵當type=0返回的是中文字元串“呵呵呵,喝喝”,type=1返回的是數字字元串“90909086676,999”, private string GetStrings(string str,int type=0) { IList<strin ...
  • Swagger一個優秀的Api介面文檔生成工具。Swagger可以可以動態生成Api介面文檔,有效的降低前後端人員關於Api介面的溝通成本,促進項目高效開發。 1、使用NuGet安裝最新的包:Swashbuckle.AspNetCore。 2、編輯項目文件(NetCoreTemplate.Web.c ...
  • 2020 年 7 月 30 日, 由.NET基金會和微軟 將舉辦一個線上和為期一天的活動,包括 微軟 .NET 團隊的演講者以及社區的演講者。本次線上大會 專註.NET框架構建微服務,演講者分享構建和部署雲原生應用程式的最佳實踐、模式、提示和技巧。有關更多信息和隨時瞭解情況:https://focu... ...
  • #abp框架Excel導出——基於vue #1.技術棧 ##1.1 前端採用vue,官方提供 UI套件用的是iview ##1.2 後臺是abp——aspnetboilerplate 即abp v1,https://github.com/aspnetboilerplate/aspnetboilerp ...
  • 前言 本文的文字及圖片來源於網路,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯繫我們以作處理。 作者:碧茂大數據 PS:如有需要Python學習資料的小伙伴可以加下方的群去找免費管理員領取 input()輸入 Python提供了 input() 內置函數從標準輸入讀入一 ...
  • 從12年到20年,python以肉眼可見的趨勢超過了java,成為了當今It界人人皆知的編程語言。 python為什麼這麼火? 網路編程語言搜索指數 適合初學者 Python具有語法簡單、語句清晰的特點,這就讓初學者在學習階段可以把精力集中在編程對象和思維方法上。 大佬都在用 Google,YouT ...
  • 在社會上存在一種普遍的對培訓機構的學生一種歧視的現象,具體表現在,比如:當你去公司面試的時候,一旦你說了你是培訓機構出來的,那麼基本上你就涼了,那麼你瞞著不說,然後又通過了面試成功入職,但是以後一旦在公司被髮現有培訓經歷,可能會面臨被降薪,甚至被辭退,培訓機構出來的學生,在用人單位眼裡就是能力低下的 ...
  • from typing import List# 這道題看了大佬寫的代碼,經過自己的理解寫出來了。# 從最外圍的四周找有沒有為O的,如果有的話就進入深搜函數,然後深搜遍歷# 判斷上下左右的位置是否為Oclass Solution: def solve(self, board: List[List[s ...
  • import requests; import re; import os; # 1.請求網頁 header = { "user-agent":'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, li ...
  • import requests; import re; import os; import parsel; 1.請求網頁 header = { "user-agent":'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537. ...