From af65667e8f5d8edd6e7be249d37ae000ebb6e0e8 Mon Sep 17 00:00:00 2001 From: MoonJeWoong Date: Tue, 12 Sep 2023 20:43:49 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20startLine=20=EA=B0=9D=EC=B2=B4=20?= =?UTF-8?q?=EB=82=B4=20queryString=EC=9D=84=20queryParams=EB=A1=9C=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../coyote/http11/request/Http11Request.java | 7 +------ .../coyote/http11/request/StartLine.java | 20 ++++++++++--------- 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/tomcat/src/main/java/nextstep/org/apache/coyote/http11/request/Http11Request.java b/tomcat/src/main/java/nextstep/org/apache/coyote/http11/request/Http11Request.java index 4a3f753207..dcd505cf45 100644 --- a/tomcat/src/main/java/nextstep/org/apache/coyote/http11/request/Http11Request.java +++ b/tomcat/src/main/java/nextstep/org/apache/coyote/http11/request/Http11Request.java @@ -20,7 +20,6 @@ public class Http11Request { private static final String FORM_KEY_VALUE_DELIMITER = "="; private StartLine startLine; - private Map queryParams = new HashMap<>(); private Map headers = new HashMap<>(); private final Cookies cookies = new Cookies(); private Map parsedBody = null; @@ -31,10 +30,6 @@ public Http11Request(InputStream inputStream) throws IOException { this.startLine = new StartLine(bufferedReader.readLine()); extractHeaders(bufferedReader); - if (startLine.hasQueryString()) { - parseMultipleValues(queryParams, - startLine.getQueryString(), "&", "="); - } if (headers.containsKey(HttpHeader.COOKIE)) { cookies.parseCookieHeaders(headers.get(HttpHeader.COOKIE)); } @@ -58,7 +53,7 @@ private void extractHeader(String line) { } } - private void parseBody(BufferedReader bufferedReader) throws IOException{ + private void parseBody(BufferedReader bufferedReader) throws IOException { parsedBody = new HashMap<>(); String requestBody = extractRequestBody(bufferedReader); parseMultipleValues(parsedBody, diff --git a/tomcat/src/main/java/nextstep/org/apache/coyote/http11/request/StartLine.java b/tomcat/src/main/java/nextstep/org/apache/coyote/http11/request/StartLine.java index 93389c7a87..aec7a88320 100644 --- a/tomcat/src/main/java/nextstep/org/apache/coyote/http11/request/StartLine.java +++ b/tomcat/src/main/java/nextstep/org/apache/coyote/http11/request/StartLine.java @@ -1,8 +1,11 @@ package nextstep.org.apache.coyote.http11.request; +import static nextstep.org.apache.coyote.http11.HttpUtil.parseMultipleValues; + import java.util.Arrays; +import java.util.HashMap; import java.util.List; -import java.util.Objects; +import java.util.Map; public class StartLine { @@ -11,10 +14,12 @@ public class StartLine { private static final int REQUEST_TARGET_INDEX = 1; private static final int HTTP_VERSION_INDEX = 2; private static final String QUERY_PARAM_DELIMITER = "?"; + private static final String VALUES_DELIMITER = "&"; + private static final String KEY_VALUE_DELIMITER = "="; private String httpMethod; private String path; - private String queryString = null; + private Map queryParams = new HashMap<>(); private String httpVersion; public StartLine(String startLine) { @@ -29,14 +34,11 @@ private void parsePath(List parsed) { if (path.contains(QUERY_PARAM_DELIMITER)) { int queryParamIndex = path.indexOf(QUERY_PARAM_DELIMITER); path = parsed.get(REQUEST_TARGET_INDEX).substring(0, queryParamIndex); - queryString = parsed.get(queryParamIndex + 1); + String queryString = parsed.get(queryParamIndex + 1); + parseMultipleValues(queryParams, queryString, VALUES_DELIMITER, KEY_VALUE_DELIMITER); } } - public boolean hasQueryString() { - return Objects.nonNull(queryString); - } - public String getHttpMethod() { return httpMethod; } @@ -45,7 +47,7 @@ public String getPath() { return path; } - public String getQueryString() { - return queryString; + public Map getQueryParams() { + return new HashMap<>(queryParams); } }