【库】用Rin透视Web请求

news/2025/2/22 21:28:59/文章来源:https://www.cnblogs.com/axzxs2001/p/18731443

  Rin 可以捕获对 ASP.NET Core 应用程序的 HTTP 请求,并为捕获的数据提供查看器。它是调试 Web 应用程序(例如,网站、API 应用)的有用工具。

  先看如下代码:

var builder = WebApplication.CreateBuilder(args);
builder.Logging.AddRinLogger();
builder.Services.AddRin();
builder.Services.AddHttpClient();
var app = builder.Build();app.UseRin();
app.UseRinDiagnosticsHandler();var summaries = new[]
{"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};app.MapGet("/weatherforecast", () =>
{var forecast = Enumerable.Range(1, 5).Select(index =>new WeatherForecast(DateOnly.FromDateTime(DateTime.Now.AddDays(index)),Random.Shared.Next(-20, 55),summaries[Random.Shared.Next(summaries.Length)])).ToArray();return forecast;
});app.MapPost("/weatherforecast", (WeatherForecast weather) =>
{return weather;
});
app.MapPut("/weatherforecast", (WeatherForecast weather) =>
{return weather;
});
app.MapDelete("/weatherforecast", (int id) =>
{return true;
});app.MapGet("/weather", async (IHttpClientFactory clientFactory) =>
{var lat = "35.71459525981295";var lon = "139.7989249730396";var apiKey = "6d43c019aa2aeb0e7dd5ce070f174248";var client = clientFactory.CreateClient();var url = $"https://api.openweathermap.org/data/2.5/forecast?lat={lat}&lon={lon}&appid={apiKey}";Console.WriteLine(url);var response = await client.GetAsync(url);return response.Content.ReadAsStringAsync();
});app.Run();internal record WeatherForecast(DateOnly Date, int TemperatureC, string? Summary)
{public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
}

  Rin是内置的,运行起程序后,只需要换成/rin,就可以访问具体请求信息,这点非常方便,轻巧。如下图,是get请求的相关信息。

Request基本信息:

 Response基本信息:

 Timleline:这是区分了Processing和Transferring两个事件。

   上面是get请求的三个Tab信息。post,put,delete等其他类型请求类似,下图是post的请求,增加了请求body信息。

 

  可能你觉得,如果只有这么简单,那直接用Postman等客户端工具也是可以的。当然,是可以的,但Rin不仅如此,还可以对Web内部对第三方的请求也给记录下来。

下图是在Timeline,在Proccessing和Transferring增加Trace,来清晰地表示客户端一个请求,后端的调用链路。

   具体的Trace可以参看Trace的Tab,这里清晰地说明了4个Trace分别对应的Start processing HTTP Request,Sending HTTP request,Received HTTP response,End procession HTTP request。

   Rin很轻量,建议在调试时用,在生产环境上,有专业的日志,监控和链路跟踪系统,并不需要。虽然Rin已有两年没有更新,但它的轻量,容用,基本能满足我们的需求了。

  文章来源微信公众号

  想要更快更方便的了解相关知识,可以关注微信公众号 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/888182.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【蓝桥训练记录】第 26 场 蓝桥月赛

训练情况赛后反思 这场怎么都是猜猜乐+典题,做不出来的题真的不会了 A题 显然 2025 里面有多少个 15,除法向上取整即可点击查看代码 #include <bits/stdc++.h> // #define int long long #define endl \nusing namespace std;void solve(){cout<<ceil(1.0*2025/15…

光纤三维布里渊温度和应变分布matlab模拟与仿真

1.程序功能描述 光纤三维布里渊温度和应变分布matlab模拟与仿真。其中 , 布里渊散射是光波与声波在光纤中传播时相互作用而产生的光散射过程 , 在不 同的条件下 , 布里渊散射又分别以自发散射和受激散射两种形式表现出来 。 2.测试软件版本以及运行结果展示MATLAB2022A版…

基于一阶梯度的图像亚像素位移matlab仿真,带GUI界面

1.算法运行效果图预览 (完整程序运行后无水印)2.算法运行软件版本 matlab2022a3.部分核心程序 (完整版代码包含详细中文注释和操作步骤视频)% --- Executes on button press in checkbox1. function checkbox1_Callback(hObject, eventdata, handles) % hObject handle to…

Java基础学习(十六)

Java基础学习(十六):多线程 目录Java基础学习(十六):多线程概念多线程的实现方式常见成员方法线程安全问题同步代码块同步方法Lock 锁生产者消费者模式(等待唤醒机制)线程池 本文为个人学习记录,内容学习自 黑马程序员概念进程:程序的基本执行实体 线程:操作系统能够…

AXI4-Stream Data FIFO(2.0)

IP核具体设置如下,数据宽度64bit,深度32,启用了包传输。打开Example Design三个IP核和两个AXI读写模块。 clk_wiz_0是mmcm IP核,提供工作时钟,proc_sys_reset_0是系统复位 IP核,提供复位信号,axis_data_fifo是本次的仿真IP 核。 axis_data_fifo_example_master是写模块,…

DeepSeek宣布下周开源5大项目,这才是真OpenAI!

近日,DeepSeek 团队宣布将在下周连续开源 5 个项目。这一举措不仅吸引了众多开发者的目光,还在技术社区引发了热烈讨论,不少网友甚至将 DeepSeek 誉为 “真正的 OpenAI”。一、DeepSeek开源计划详情(一)开源时间与方式DeepSeek团队决定开展“OpenSourceWeek”(开源周)活…

NOIP 2024 游记 | Loser.

Loser. p.s. 本文章比较废话()Day 1 早上 6:30 被拽起来了。吃饭。出门。坐地铁。到! 华科大门,比,华师气派多了诶诶。扯了个横幅,拍照。拍照。拍照。 诶诶,怎么 7:45 就拽着我们进去了。 进考场。我怎么是第一排第一个 /jk 看见了 @Hakureireimu_cjrljpx,但是他不认识…

利用 vscode 进行远程开发

打开远程项目路径在远程服务器上安装 vscode 插件 Go、GitLens、Git History、Git Graph、MarsCode AI对于本地已经安装的插件,点击Install In SSH:xxx就能把插件安装到远程服务器对于本地没有安装的插件,直接查找插件,选中安装,即是安装到远程服务器git 不高亮显示修改行从…

查看Oracle的数据库表命令

在 Oracle 里 “数据库” 的概念和其他数据库系统有所不同,Oracle 一个实例通常对应一个数据库,但可以包含多个不同的模式(类似于其他数据库系统中的用户数据库)1. 查看数据库名称你可以在 SQL*Plus 或者 SQL Developer 等工具中执行如下 SQL 语句:SELECT name FROM v$dat…

Linux 中declare命令详解

Linux 中declare命令001、普通测试[root@PC1 dir1]# ls [root@PC1 dir1]# echo $var1[root@PC1 dir1]# var1="hello world" [root@PC1 dir1]# echo $var1 hello world [root@PC1 dir1]# var1=100.55 [root@PC1 dir1]# echo $var1 100.55 [root@PC1 dir1]# var1=100 […

《软件开发与创新课程设计》第一次课后作业——对学生选课系统的改进

(1)博客介绍 本文的学生选课系统的源码来自于csdn的一篇博客当中。该系统的实现语言以C++为主,本文的主要内容围绕该系统进行分析,并针对系统的主要问题进行一些修改或重构。 本篇如有问题存在,请各位读者多多指正! (2)学生选课系统分析 源代码如下: 点击查看代码 #de…