You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure WebApp的.NET Core微服务API中识别未使用端点?

识别微服务仓库中未使用API端点的程序化方案

我负责一个从单体系统拆分而来的多微服务API项目,拆分时的操作导致多个代码仓库里有大量复制粘贴的未使用端点,结构示例如下:

# 单体时期目录
monolith/account/
monolith/payment/
monolith/order/

# 拆分后的微服务目录
微服务 : account
monolith/account/ [已使用]
monolith/payment/ [复制粘贴未使用]
monolith/order/   [复制粘贴未使用]

微服务 : payment
monolith/account/ [复制粘贴未使用]
monolith/payment/ [已使用]
monolith/order/   [复制粘贴未使用]

微服务 : order
monolith/account/ [复制粘贴未使用]
monolith/payment/ [复制粘贴未使用]
monolith/order/   [已使用]

我们的API部署在Azure WebApp上,所有应用都启用了Application Insights,下面是程序化识别未使用端点的具体步骤:

1. 从Application Insights导出已使用端点清单

利用App Insights的Kusto查询,针对每个微服务对应的App Insights资源,抓取所有被调用过的API端点:

  • 示例Kusto查询(根据你的API路径规则调整parse逻辑):
requests
| where cloud_RoleName == "account-service"  // 替换为你的微服务名称
| parse url with * "/api/" endpoint  // 匹配/api/后的端点路径
| summarize count() by endpoint
| project endpoint
  • 把每个微服务的查询结果导出成JSON或CSV,得到该服务的已使用端点清单。

2. 扫描代码仓库提取所有定义的端点

用工具扫描代码,提取所有在代码中定义的API端点:

  • 如果是.NET Web API项目,用dotnet list api命令就能快速导出所有API端点:
dotnet list api --project ./AccountService/AccountService.csproj --format json

也可以用Roslyn编写自定义分析器,精准提取控制器和Action的路由模板。

  • 如果是Java/Spring项目,可以调用Spring Actuator的/mappings端点获取运行时的路由,或者用静态代码扫描脚本提取@RequestMapping、@GetMapping等注解中的路径。
  • 把扫描结果整理成结构化的清单,每个端点包含路径、所在文件等信息。

3. 对比清单找出未使用端点

写个脚本(Python、PowerShell都行)做对比:

  1. 加载已使用端点清单和所有定义的端点清单
  2. 找出那些在定义清单里,但从未出现在已使用清单中的端点
  3. 生成每个仓库的未使用端点报告,标注清楚端点路径和位置

4. 验证和自动化

  • 对标记的未使用端点做抽样验证,比如拉长App Insights的查询时间范围(覆盖几周甚至几个月的业务周期),确保确实没有调用记录
  • 把整个流程自动化:在Azure DevOps或GitHub Actions里加个定时任务,定期执行代码扫描、App Insights查询、对比分析,自动生成报告发出来

内容的提问来源于stack exchange,提问作者frictionlesspulley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 19:50:12