В настоящее время я новичок в kotlin и весеннем потоке.
Я пытаюсь получить зарегистрированного пользователя в виде строки без необходимости немедленного возврата объекта Mono.
В настоящее время у меня есть обработчик, который отображает запрос на объект DTO. как следующий
fun redeemLeave(req: ServerRequest): Mono<ServerResponse> =
req.bodyToMono<RedeemLeaveDTO>().map { issuance ->
val errors = validator.validate(issuance)
if (errors.isNotEmpty()) {
issuance.fieldErrors = errors.map {
FieldErrorDTO(it.propertyPath.toString(), it.message)
}
}
issuance
}.flatMap {
when (it.fieldErrors) {
null -> employeeComposer.redeemLeave(it)
else -> ServerResponse.unprocessableEntity().body(Mono.just(it))
}
}
У меня есть другая конечная точка, где я могу получить имя пользователя, но нет отображения dto, поэтому оно работает хорошо.
fun requestBalance(req: ServerRequest): Mono<ServerResponse> =
req.principal()
.map(Principal::getName).flatMap { username ->
employeeComposer.requestBalance(username)
}
Как получить имя пользователя из вызова Principal ()? Есть ли способ лучше? Я хотел бы иметь возможность получить имя пользователя для первого метода, а также иметь преобразование dto.