in src/main/java/org/apache/dubbo/proxy/server/HttpProcessHandler.java [48:77]
protected void channelRead0(ChannelHandlerContext ctx, FullHttpRequest msg) {
QueryStringDecoder queryStringDecoder = new QueryStringDecoder(msg.uri());
String path = queryStringDecoder.rawPath();
if (path.endsWith("/")) {
path = path.substring(0, path.length() - 1);
}
if (path.startsWith("/")) {
path = path.substring(1);
}
if (path.contains("/")) {
String application = path.split("/")[0];
String service = path.split("/")[1];
Map<String, List<String>> params = queryStringDecoder.parameters();
if (params.containsKey("group")) {
service = params.get("group").get(0) + "/" + service;
}
if (params.containsKey("version")) {
service = service + ":" + params.get("version").get(0);
}
ByteBuf raw = msg.content();
String info = raw.toString(CharsetUtil.UTF_8);
ServiceDefinition serviceDefinition = JSON.parseObject(info, ServiceDefinition.class);
serviceDefinition.setServiceID(service);
serviceDefinition.setApplication(application);
doRequest(ctx, serviceDefinition, msg);
} else {
//TODO error handle
}
}