Java 获取Spring Boot中API调用计数的热点
我有一个简单的类(模型),有3个变量id(p.k和auto increment)url(String)count(int) 客户端可以添加url,也可以通过id获取url。 问题是我需要计算每个url被调用的次数 我的Pojo->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
@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"
]
}
]
}