【发布时间】:2021-10-09 17:47:24
【问题描述】:
我有方法:
@GetMapping
public Either<ResponseEntity<TaskError>,ResponseEntity<List<TaskDto>>> readAllOrderedByStatus() {
var result = taskCrudService.readAllOrderedByStatus();
if (result.isLeft()) {
return Either.left(
new ResponseEntity<>(
TaskError.TASKS_LIST_NOT_FOUND,
HttpStatus.NOT_FOUND));
}
return Either.right(new ResponseEntity<>(result.get(),HttpStatus.OK));
}
我想返回 List 和 HTTP 状态或 TaskError.TASKS_LIST_NOT_FOUND 和 HTTP 状态,但由于 Either 在 Json 中还有其他内容,例如“正确”等。
解决方案(感谢@chrylis -cautiouslyoptimistic)
@GetMapping
public ResponseEntity<?> readAllOrderedByStatus() {
var result = taskCrudService.readAllOrderedByStatus();
return taskCrudService
.readAllOrderedByStatus()
.fold(
error -> new ResponseEntity<>(error,HttpStatus.NOT_FOUND),
list -> new ResponseEntity<>(list,HttpStatus.OK));
}
【问题讨论】:
标签: java spring rest either vavr