统一处理响应
@Slf4j
public class GlobalResponseBodyHandler extends ResponseBodyResultHandler {
public GlobalResponseBodyHandler(List<HttpMessageWriter<?>> writers, RequestedContentTypeResolver resolver) {
super(writers, resolver);
}
@Override
@NonNull
public Mono<Void> handleResult(@NonNull ServerWebExchange exchange, @NonNull HandlerResult result) {
ReactiveAdapter adapter = getAdapter(result);
if (adapter != null) {
// 如果返回结果是 Mono 类型,则进行处理
Mono<Map<String, Object>> body = ((Mono<?>) Objects.requireNonNull(result.getReturnValue())).map(data -> {
Map<String, Object> map = new HashMap<>();
map.put("data", data);
map.put("code", 200);
map.put("message", "success");
return map;
});
return writeBody(body, result.getReturnTypeSource().nested(), exchange);
} else {
Map<String, Object> map = new HashMap<>();
map.put("data", result.getReturnValue());
map.put("code", 200);
map.put("message", "success");
return writeBody(Mono.just(map), result.getReturnTypeSource().nested(), exchange);
}
}
}
最后更新于