Java 获取Spring Boot中API调用计数的热点

Java 获取Spring Boot中API调用计数的热点,java,spring,spring-boot,maven,Java,Spring,Spring Boot,Maven,我有一个简单的类(模型),有3个变量id(p.k和auto increment)url(String)count(int) 客户端可以添加url,也可以通过id获取url。 问题是我需要计算每个url被调用的次数 我的Pojo-> @Entity @Data @NoArgsConstructor public class Sortner { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Intege

我有一个简单的类(模型),有3个变量id(p.k和auto increment)url(String)count(int)

客户端可以添加url,也可以通过id获取url。 问题是我需要计算每个url被调用的次数

我的Pojo->

@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);
    }
这就是我试图做的,但这并没有返回响应,因为我希望它只返回1,无论我使用Swagger调用api多少次(是的,逻辑真的很糟糕) 我不知道如何解决此问题并使其正常工作请帮助Sortner类

 public class Sortner {
  Long id;
  URL url;
 }
控制器

 @GetMapping("/findUrlById")
 public void findSortnerById(Integer id, HttpServletResponse response) throws 
 IOException {
   List<Sortner> urls = sortnerService.findUrlById(id);
   if(urls != null && urls.size() > 0) {
       response.sendRedirect(urls.get(0).getUrl().toString());
   }
     response.sendError(HttpServletResponse.SC_NOT_FOUND)
   }
@GetMapping(“/findUrlById”)
public void findSortnerById(整数id,HttpServletResponse)抛出
IOException{
List url=sortnerService.findUrlById(id);
如果(URL!=null&&URL.size()>0){
response.sendRedirect(url.get(0.getUrl().toString());
}
response.sendError(未找到HttpServletResponse.SC)
}
重定向到所需的URL
response.sendError返回404,因为在数据库中找不到URL

您可以使用Spring引导执行器获取详细信息。它不仅提供API点击次数,还提供持续时间、状态响应代码以及更多详细信息,您可以根据需要对其进行过滤

您只需要在pom文件中添加以下依赖项

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
</dependencies>
您可以根据需要使用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
这里已经解释了更多细节

如果您想通过仪表盘分析API的详细信息,您可以查看给定的博客


但我想在每次客户端到达端点时增加y计数器变量?你能提出一些建议吗!谢谢,我知道了,这只是我写的一个例子。看起来这只会给我url作为res。如果计数器var增加,这是没有用的
http://localhost:8080/actuator/metrics/http.server.requests
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"
            ]
        }
    ]
}