当前位置: 首页 > 知识库问答 >
问题:

在rest api中返回其中一个(Vavr)

怀晋
2023-03-14

我有方法:

@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));
}

我想返回列表和HTTP状态或TaskError。TASKS\u LIST\u NOT\u FOUND和HTTP状态,但由于两者之一,Json中还有其他内容,如“right”等。

解决方案(感谢@chrylis-谨慎光学)

@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));
}

共有1个答案

柴晔
2023-03-14

我在REST API中使用的正是这种概念。您需要负责将您的要么转换为一致的响应。在大多数情况下,包括您的情况下,您需要折叠

return taskCrudService.readAllOrderedByStatus() // -> Either
  .fold(
    __   -> ResponseEntity.notFound(TASKS_LIST_NOT_FOUND).build(),
    list -> ResponseEntity.ok(list)
  );
 类似资料:
  • 我正在进行一个SpringBoot项目,该项目使用常规MVC机制来公开REST API。 在一个特定的GET API中,我得到了406HTTP响应。 下面是我的控制器方法的样子: AnalysisDetailResponse是使用Lombok创建的(在其他API的情况下,Lombok可以完美地工作) 我已经验证了整个响应对象的内容,它似乎是完美的。然而,响应总是406。 我需要JSON格式的响应,

  • 我目前正在一个后端有Spring,前端有Angularjs的网站上工作,我们已经讨论了后端响应以处理前端的消息对话框,我有一个问题要问: 假设我有一个API: 若客户机发出一个带有无效参数(如字符串)的请求,那个么应该从服务器返回哪个响应代码?HTTP 400错误的请求和响应正文包含消息“fromTime和toTime应采用时间戳格式”,还是HTTP 200包含相同的消息? 我看到了一些Googl

  • 我注意到,如果没有where(),returning()操作不可用。这是故意的吗? 这项工作: 这不起作用: 我应该考虑这个“黑客”吗?

  • 问题内容: 我试图在 JavaScript中 返回两个值。这可能吗? 问题答案: 否,但是您可以返回一个包含您的值的数组: 然后,您可以像这样访问它们: 使用最新的ECMAScript 6语法 *,您还可以更直观地分解返回值: 如果要在每个返回值上贴上“标签”(易于维护),则可以返回一个对象: 并访问它们: 或使用ES6语法:

  • 问题内容: 序言:我知道使用列表或其他集合来返回结果,但是随后我必须遍历列表以将结果取出:请参阅第二个示例 前言2:我正在寻找“ Java不支持…”之外的答案。 我正在寻找一种从Java方法调用返回多个对象的便捷方法。 有点像PHP: 我真的厌倦了在参数中传递持有者对象,例如: 然后: 如果有人想出一种优雅的方法来解决这个问题,那将非常有兴趣。 使用清单 这有两个缺点: 我必须先将清单装在房子的被

  • 我的Go函数预计会返回一个值,但在调用库函数时可能会出现恐慌。我可以使用在延迟调用中捕获它,但是在这种情况下如何返回值呢?