CompletableFuture:控制 http 响应状态代码

use*_*611 2 asynchronous spring-mvc spring-boot

我目前正在努力在某些条件下返回 http 响应状态代码。假设 taskService.getNewTasks 的返回对象为 null。在这种情况下,我想返回状态代码 404。在某些异常情况下,我想返回一些 50x,依此类推。

到目前为止我的代码

@RestController
public class TaskController {

  @Autowired
  private TaskService taskService;

  @GetMapping(path = "gettasks")
  private Future<Tasks> getNewTasks() {
    return taskService.getNewTasks();
  }
  ...
}

@Service
public class TaskService {

  @Async
  public Future<Tasks> getNewTasks() {
    ...
    return CompletableFuture.completedFuture(tasks);
  }
}
Run Code Online (Sandbox Code Playgroud)

Vic*_*tit 5

这可能适合你。

@GetMapping(path = "gettasks")
private CompletableFuture<ResponseEntity<Tasks>> getNewTasks() {
  CompletableFuture<Tasks> future = new CompletableFuture<>();
  future.complete(taskService.getNewTasks());
  if(yourCondition){
    return future.thenApply(result -> new ResponseEntity<Tasks>(result, HttpStatus.STATUS_1));
  }
  return future.thenApply(result -> new ResponseEntity<Tasks>(result, HttpStatus.STATUS_2));
}
Run Code Online (Sandbox Code Playgroud)