dubbo插件分为:AlibabaDubboPlugin和ApacheDubboPlugin插件
这里分析AlibabaDubboPlugin插件
dubbo插件请求响应有:
BodyParamPlugin:body参数处理
AlibabaDubboPlugin:dubbo参数泛化调用
DubboResponsePlugin:dubbo处理完后响应返回
BodyParamPlugin
public Mono<Void> execute(final ServerWebExchange exchange, final SoulPluginChain chain) {
final ServerHttpRequest request = exchange.getRequest();
final SoulContext soulContext = exchange.getAttribute(Constants.CONTEXT);
if (Objects.nonNull(soulContext) && RpcTypeEnum.DUBBO.getName().equals(soulContext.getRpcType())) {
MediaType mediaType = request.getHeaders().getContentType();
ServerRequest serverRequest = ServerRequest.create(exchange, messageReaders);
if (MediaType.APPLICATION_JSON.isCompatibleWith(mediaType)) {
return body(exchange, serverRequest, chain);
}
if (MediaType.APPLICATION_FORM_URLENCODED.isCompatibleWith(mediaType)) {
return formData(exchange, serverRequest, chain);
}
return query(exchange, serverRequest, chain);
}
return chain.execute(exchange);
}
未完待续…