Webflux 学习笔记

这篇博客详细探讨了WebFlux在业务异常处理方面的实践,记录了作者在使用WebFlux过程中对于错误处理的思路和方法。
摘要由CSDN通过智能技术生成

WebFlux 学习笔记

1. WebFlux business exception 处理

代码不完整,主要是记录思想:

private static final String STUDENT_NOT_FOUND_BY_ID = "Student of (name:%s) doesn't exist";
private static final String STUDENT_SCORE_NOT_FOUND_BY_ID = "StudentScore (studentId:%s) doesn't have any scores";

public Mono<StudentScore> findStudentScore(List<String> studentNames) {
        return studentService.findStudentByName(studentNames) //1 返回Flux<StudentEntity>
                .switchIfEmpty(Mono.error(notFound(STUDENT_NOT_FOUND_BY_ID, userId))) // 2 返回业务错误信息1
                .collectList() // 3 转换成Mono<Collection<StudentEntity>> 
                .flatMapMany(studentEntities -> {
                    // 4 进行其他的业务处理
                    Flux<StudentScore> studentScores = studentScoreService.findStudentScore(studentEntities.getStudentIds());
                    return studentScores;
                })
                .switchIfEmpty(Mono.error(notFound(STUDENT_SCORE_NOT_FOUND_BY_ID, userId)));// 5 返回业务错误信息2
}

private  ResponseStatusException notFound(String errorInfo) {
    return new ResponseStatusException(HttpStatus.NOT_FOUND,
            Optional.ofNullable(errorInfo).orElse(HttpStatus.NOT_FOUND.getReasonPhrase()));
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值