首页 > 解决方案 > 在 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 多少次(是的,逻辑真的很糟糕)我不知道如何解决这个问题并使它工作请帮忙

标签: javaspringspring-bootmaven

解决方案


您可以使用 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"
            ]
        }
    ]
}

此处已解释了更多详细信息

Spring Boot:计算页面浏览量 - 执行器

Spring Boot REST API 的指标集合

如果您想使用仪表板更详细地分析 API 详细信息,您可以关注给定的博客

使用 Spring Boot Admin 进行应用程序监控

使用 Prometheus 和 Grafana 进行应用程序监控


推荐阅读