gpt4 book ai didi

java - 在rest api中返回任一(Vavr)

转载 作者:行者123 更新时间:2023-12-04 07:18:26 26 4
gpt4 key购买 nike

我有方法:

@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 状态,但由于在 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));
}

最佳答案

我在 REST API 中正是为了这种概念使用Either。您需要负责将您的任何一个转换为一致的响应。在大多数情况下,包括您的情况,您都需要 fold :

return taskCrudService.readAllOrderedByStatus() // -> Either
.fold(
__ -> ResponseEntity.notFound(TASKS_LIST_NOT_FOUND).build(),
list -> ResponseEntity.ok(list)
);

关于java - 在rest api中返回任一(Vavr),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68654360/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com