【发布时间】:2020-05-10 05:28:26
【问题描述】:
我正在从 Spring Boot 应用程序(在 JAVA 11 中)同步调用 REST API 来下载文件。
这就是 REST API 的样子:
@GetMapping("/download/{userId}/{fileName}")
public String download(final int userId, final String fileName) {
if(requested file is available) {
return {file location URL}
} else {
Begin generating a new file (takes 5 seconds to more than 5 minutes)
return "file generation in progress"
}
}
API 返回两件事,如果它正在生成文件,它会返回文件的状态(这需要 5 秒到 5 分钟或更长时间),或者如果文件已生成,则返回文件位置 URL 本身。
我要解决的问题是,我需要每 5 秒调用一次“/download” API 并检查文件是否准备好。
类似这样的:
- 首先调用“/download” -> API 返回“正在生成文件”状态
- 所以,5 秒后再次调用它 -> API 再次返回“正在生成文件”状态
- 所以,5秒后再次调用-> API再次返回“正在生成文件”状态(但此时假设文件已生成)
- 所以,5 秒后再次调用它 -> API 返回文件位置 URL
- 停止调用 API 并执行后续操作
有什么方法可以实现吗?我尝试查看CompletableFuture 和@Scheduled,但我对这两个选项都很陌生,找不到任何方法在我的代码中实现它们。任何帮助,将不胜感激!
【问题讨论】:
-
您能否调用 API 并检查下载量,例如百分比?检查这个:stackoverflow.com/questions/22273045/…
标签: java spring-boot rest restful-url