java - 在 Spring Boot 中获取 API 调用计数很热门
问题描述
我有一个简单的类(模型),它有 3 个变量 id(pk 和自动增量) url(字符串)count(int)
客户端可以添加 url 并且可以通过 id 获取 url。问题是我需要计算每个 url 被调用了多少次。
我的宝乔->
@Entity
@Data
@NoArgsConstructor
public class Sortner {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
private String url;
private Integer counter;
}
控制器 ->
@GetMapping("/findById")
public ResponseEntity<?> findById(Integer id) {
return new ResponseEntity<>(sortnerService.findById(id), HttpStatus.OK);
}
回购只是扩展 JpaRepository ..
服务 ->
public String findById(Integer id) {
Sortner sortner = new Sortner();
return "no. of times api called =>"+sortner.getCounter()+1 ;
}
这就是我试图做的,但这并没有返回响应,因为我希望它只是返回 1 无论我使用 Swagger 调用 api 多少次(是的,逻辑真的很糟糕)我不知道如何解决这个问题并使它工作请帮忙
解决方案
您可以使用 Spring Boot Actuator 获取详细信息。它不仅会提供 API 命中的计数,还会提供持续时间、状态响应代码以及更多详细信息,您可以根据需要对其进行过滤。
你只需要在pom文件中添加如下依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
然后点击给定的 URL:
http://localhost:8080/actuator/metrics/http.server.requests
您可以根据需要使用 URI、状态和异常过滤响应
localhost:8080/actuator/metrics/http.server.requests?tag=uri:<endPoint>
localhost:8080/actuator/metrics/http.server.requests?tag=uri:/user/asset/getAllAssets
localhost:8080/actuator/metrics/http.server.requests?tag=uri:/user/asset/getAllAssets&tag=status:200
响应如下
{
"name": "http.server.requests",
"description": null,
"baseUnit": "seconds",
"measurements": [
{
"statistic": "COUNT",
"value": 3
},
{
"statistic": "TOTAL_TIME",
"value": 0.21817219999999998
},
{
"statistic": "MAX",
"value": 0.1379249
}
],
"availableTags": [
{
"tag": "exception",
"values": [
"MethodArgumentTypeMismatchException",
"None"
]
},
{
"tag": "method",
"values": [
"GET"
]
},
{
"tag": "uri",
"values": [
"/{id}.*",
"/user/asset/getAsset/{assetId}",
"/user/asset/getAllAssets"
]
},
{
"tag": "outcome",
"values": [
"CLIENT_ERROR",
"SUCCESS"
]
},
{
"tag": "status",
"values": [
"400",
"404",
"200"
]
}
]
}
此处已解释了更多详细信息
如果您想使用仪表板更详细地分析 API 详细信息,您可以关注给定的博客
推荐阅读
- ios - 在应用程序内保持麦克风开启对电池的影响
- python-3.x - Web 抓取 Python 程序返回“'charmap'编解码器无法编码字符”
- python - Pandas 无法读取在 PySpark 中创建的镶木地板文件
- amazon-web-services - Lambda vs Kinesis iteratorAge - 区别?
- reactjs - 无法读取未定义的属性“id”-REACT JS
- c++ - 指针值的严格弱排序
- c# - 如何获得被点击的 PictureBox 的数量?
- php - 通过PHP动态删除表格内容的mySQL自动增量+自动调整id?
- python - python列表 - 无法转换为json
- python - 为什么 python 可能会覆盖与尚未调用的字典键关联的值?