HTTP API에서 HTTP 메시지 바디에 데이터를 직접 담아 전송하는 방법이다.
주로 JSON, XML, TEXT 형식으로 데이터를 주고 받으며, POST, PUT, PATCH 메서드에서 사용된다.
이번 시간엔 가장 단순한 텍스트 메시지를 HTTP 메시지 바디에 담다 전송하고 읽는 방법을 살펴보자.
참고! XML의 경우 레거시 코드에서 많이 볼 수 있으며 요즘 잘 사용하는 방식은 아니다.
Servlet 코드
@WebServlet(name = "requestBodyStringServlet", urlPatterns = "/request-body-string")
public class RequestBodyStringServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 메시지 바디를 InputStream으로 읽기
ServletInputStream inputStream = request.getInputStream();
// InputStream을 UTF-8 문자로 변환
String messageBody = StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8);
// 결과 출력
System.out.println("messageBody = " + messageBody);
// 응답
response.getWriter().write("OK");
}
}
코드 설명
request.getInputStream()을 통해 메시지 바디의 데이터를 바이트 코드로 읽어들임.StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8) 사용.