diff --git a/rapidoid-ctx/src/main/java/org/rapidoid/http/Req.java b/rapidoid-ctx/src/main/java/org/rapidoid/http/Req.java index 1e964f9165..c018cd9a62 100644 --- a/rapidoid-ctx/src/main/java/org/rapidoid/http/Req.java +++ b/rapidoid-ctx/src/main/java/org/rapidoid/http/Req.java @@ -45,6 +45,10 @@ public interface Req { Req path(String path); + String query(); + + Req query(String query); + byte[] body(); Req body(byte[] body); diff --git a/rapidoid-http-fast/src/main/java/org/rapidoid/http/fast/FastHttp.java b/rapidoid-http-fast/src/main/java/org/rapidoid/http/fast/FastHttp.java index 80a9df9500..3033cdccc0 100644 --- a/rapidoid-http-fast/src/main/java/org/rapidoid/http/fast/FastHttp.java +++ b/rapidoid-http-fast/src/main/java/org/rapidoid/http/fast/FastHttp.java @@ -260,10 +260,11 @@ public void process(Channel channel) { String verb = xverb.str(buf); String uri = xuri.str(buf); String path = UTILS.urlDecode(xpath.str(buf)); + String query = UTILS.urlDecode(xquery.str(buf)); MediaType contentType = handler != null ? handler.contentType() : MediaType.HTML_UTF_8; - req = new ReqImpl(this, channel, isKeepAlive.value, verb, uri, path, body, params, headers, cookies, + req = new ReqImpl(this, channel, isKeepAlive.value, verb, uri, path, query, body, params, headers, cookies, posted, files, contentType); } diff --git a/rapidoid-http-fast/src/main/java/org/rapidoid/http/fast/ReqImpl.java b/rapidoid-http-fast/src/main/java/org/rapidoid/http/fast/ReqImpl.java index ec1bfb875c..a7fbdec508 100644 --- a/rapidoid-http-fast/src/main/java/org/rapidoid/http/fast/ReqImpl.java +++ b/rapidoid-http-fast/src/main/java/org/rapidoid/http/fast/ReqImpl.java @@ -54,6 +54,8 @@ public class ReqImpl implements Req, Constants { private volatile String path; + private volatile String query; + private volatile byte[] body; private final Map params; @@ -83,8 +85,9 @@ public class ReqImpl implements Req, Constants { private final MediaType defaultContentType; public ReqImpl(FastHttp http, Channel channel, boolean isKeepAlive, String verb, String uri, String path, - byte[] body, Map params, Map headers, Map cookies, - Map posted, Map files, MediaType defaultContentType) { + String query, byte[] body, Map params, Map headers, + Map cookies, Map posted, Map files, + MediaType defaultContentType) { this.http = http; this.channel = channel; @@ -92,6 +95,7 @@ public ReqImpl(FastHttp http, Channel channel, boolean isKeepAlive, String verb, this.verb = verb; this.uri = uri; this.path = path; + this.query = query; this.body = body; this.params = params; this.headers = headers; @@ -134,6 +138,17 @@ public Req path(String path) { return this; } + @Override + public String query() { + return query; + } + + @Override + public Req query(String query) { + this.query = query; + return this; + } + @Override public byte[] body() { return body;