java 统计今日接口调用次数和总次数的
时间: 2024-03-29 22:40:14 浏览: 29
要统计今日接口调用次数和总次数,你可以使用一个计数器来记录接口的调用次数,并将其存储在一个外部的数据存储介质中,以便在后续的请求中可以读取和更新该计数器值。下面是一个简单的Java代码示例,可以实现这个功能:
```java
import java.io.*;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.*;
public class ApiCounter {
private static final String FILE_PATH = "api_counter.txt";
public static void main(String[] args) {
// 读取文件中的计数器值
int totalCount = readTotalCountFromFile();
int todayCount = readTodayCountFromFile();
// 输出统计结果
System.out.println("Total API Calls: " + totalCount);
System.out.println("Today's API Calls: " + todayCount);
// 更新计数器值
totalCount++;
todayCount++;
// 将更新后的计数器值写入文件中
writeTotalCountToFile(totalCount);
writeTodayCountToFile(todayCount);
}
// 从文件中读取总的调用次数
private static int readTotalCountFromFile() {
int totalCount = 0;
try {
File file = new File(FILE_PATH);
if (!file.exists()) {
file.createNewFile();
}
BufferedReader reader = new BufferedReader(new FileReader(file));
String line = reader.readLine();
if (line != null && !line.isEmpty()) {
totalCount = Integer.parseInt(line);
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
return totalCount;
}
// 将总的调用次数写入文件中
private static void writeTotalCountToFile(int totalCount) {
try {
FileWriter writer = new FileWriter(FILE_PATH);
writer.write(String.valueOf(totalCount));
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
// 从文件中读取今日调用次数
private static int readTodayCountFromFile() {
int todayCount = 0;
try {
File file = new File(FILE_PATH);
if (!file.exists()) {
file.createNewFile();
}
Properties props = new Properties();
FileInputStream fis = new FileInputStream(file);
props.load(fis);
fis.close();
LocalDate currentDate = LocalDate.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String key = formatter.format(currentDate);
String todayCountStr = props.getProperty(key);
if (todayCountStr != null && !todayCountStr.isEmpty()) {
todayCount = Integer.parseInt(todayCountStr);
}
} catch (IOException e) {
e.printStackTrace();
}
return todayCount;
}
// 将今日调用次数写入文件中
private static void writeTodayCountToFile(int todayCount) {
try {
File file = new File(FILE_PATH);
Properties props = new Properties();
FileInputStream fis = new FileInputStream(file);
props.load(fis);
fis.close();
LocalDate currentDate = LocalDate.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String key = formatter.format(currentDate);
props.setProperty(key, String.valueOf(todayCount));
FileOutputStream fos = new FileOutputStream(file);
props.store(fos, "API Call Count");
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
在这个示例中,我们使用了一个名为 `api_counter.txt` 的文件来存储总的调用次数和每日的调用次数。在 `readTotalCountFromFile()` 和 `writeTotalCountToFile()` 方法中,我们使用了 `BufferedReader` 和 `FileWriter` 类来读取和写入文件中的总的调用次数。在 `readTodayCountFromFile()` 和 `writeTodayCountToFile()` 方法中,我们使用了 `Properties` 类和 `LocalDate` 类来读取和写入文件中的每日调用次数。注意,在写入每日调用次数时,我们将当前日期作为键,以便在后续的请求中可以读取和更新该计数器值。
这个示例只是一个简单的实现,你可以根据自己的需求对其进行修改和扩展。