-
서블릿 HTTP 요청 데이터스프링/스프링 MVC 패턴 2023. 2. 10. 13:12
HTTP에 원하는 값을 요청해서 웹 사이트에 데이터를 보내는 방법이 있다.
1. GET 쿼리 파라미터
@WebServlet(name = "requestParamServlet", urlPatterns = "/request-param") public class RequestParamServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("[전체 파라미터 조회] - start"); request.getParameterNames().asIterator() .forEachRemaining(paramName -> System.out.println(paramName + "=" + request.getParameter(paramName))); // paramName은 username과 age이고, request.getParameter(paramName)은 hello와 20 System.out.println("[전체 파라미터 조회] - end"); System.out.println(); System.out.println("[단일 파라미터 조회]"); String username = request.getParameter("username"); String age = request.getParameter("age"); System.out.println("username = " + username); System.out.println("age = " + age); System.out.println("[이름이 같은 복수 파라미터 조회]"); String[] usernames = request.getParameterValues("username"); // 중복조회는 Values를 붙이면 된다. for (String name : usernames) { System.out.println("username = " + name); } } }
쿼리 파라미터에 직접 원하는 값을 설정해서 요청하는 것이다.
개발자가 따로 값을 지정하지않고, 정해진 url, http:localhost:8080/request-param?username=hello&age=20 이라고 입력하면 username이라는 key값에 hello라는 value가 저장되고, age라는 key값에 20이라는 value가 저장된다.
2. 단순 텍스트를 이요한 API 메시지 바디
@WebServlet(name = "requestBodyStringServlet", urlPatterns = "/request-body-string") public class RequestBodyStringServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ServletInputStream inputStream = request.getInputStream(); // 데이터를 읽어서 postman에서 보내는걸 여기 출력창에 출력 String messageBody = StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8); System.out.println("messageBody = " + messageBody); response.getWriter().write("ok"); } }
ServletInputStream을 통해 용청하는 데이터를 읽어서 inputStream에 저장한다.
StreamUtils.copyToString으로 inputStream을 StandardCharsets.UTF_8로 고정시킨다.
이렇게 하면 messageBody 요청을 보냈을 때 값을 서버에 계속 저장하게 된다.
3. json 방식의 API 메시지 바디 요청
@WebServlet(name = "requestBodyJsonServlet", urlPatterns = "/request-body-json") public class RequestBodyJsonServlet extends HttpServlet { private ObjectMapper objectMapper = new ObjectMapper(); @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ServletInputStream inputStream = request.getInputStream(); String messageBody = StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8); System.out.println("messageBody = " + messageBody); HelloData helloData = objectMapper.readValue(messageBody, HelloData.class); System.out.println("helloData.username() = " + helloData.getUsername()); System.out.println("helloData.age() = " + helloData.getAge()); response.getWriter().write("ok"); } }
위의 코드는 json 방식으로 API 메시지를 오청하는 것이다. json 방식이라 함은 {"username": "hello", "age": 20}이라는 표기명으로 적는 것이 json 방식이다.
위의 코드에서 intellij 결과창에는 messageBody가 {"username": "hello", "age": 20}로 뜨고, username은 hello, age는 20으로 결과값이 나온다.
'스프링 > 스프링 MVC 패턴' 카테고리의 다른 글
서블릿을 이용한 회원가입 만들기 (0) 2023.02.10 서블릿 HTTP 응답 데이터 (0) 2023.02.10 HTML, HTTP API, CSR, SSR (0) 2023.02.07 동시 요청 - 멀티 쓰레드 (쓰레드 풀) (0) 2023.02.07 서블릿 (0) 2023.02.07