HTTP 요청 데이터 - API 메시지 바디 - 단순 텍스트

김원종·2023년 12월 15일
  • HTTP message body에 데이터를 직접 담아서 요청

    • HTTP API에서 주로 사용 , JSON , XML ,TEXT
    • 데이터 형식은 주로 JSON 사용
    • POST , PUT , PATCH
  • 먼저 가장 단순한 텍스트 메시지를 HTTP 메시지 바디에 담아서 전송하고 읽어보자!

  • HTTP 메시지 바디의 데이터를 InputStream을 사용해서 직접 읽을 수 있다.

RequestBodyStringServlet

package hello.servlet.basic.request;
import org.springframework.util.StreamUtils;
import javax.servlet.ServletException;
import javax.servlet.ServletInputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
@WebServlet(name = "requestBodyStringServlet", urlPatterns = "/request-bodystring")
public class RequestBodyStringServlet extends HttpServlet {
 @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);
 response.getWriter().write("ok");
 }
}

ServletInputStream inputStream = request.getInputStream();
이렇게 하면 메시지 바디의 내용을 바이트 코드로 얻을 수 있다.
그 다음 바이트 코드를 스트링으로 바꿔야한다!!

String messageBody = StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8);

스프링이 제공하는 유틸리티 클래스를 사용하고 꺼내줄때 인코딩 정보를 꼭 알려줘야한다. 바이트를 문자로 변환할 때는 어떤 인코딩인지 반대로 문자를 바이트로 바꿔줄때도 어떤 인코딩인지 알려줘야한다!!
지금은 대부분 UTF-8을 사용한다.

사실 위 내용대로 문자로 주고받는 방식은 잘 사용하지않고 JSON형식으로 주고받으니 참고정도 하자!!

참고
inputStream은 byte 코드를 반환한다 . byte 코드를 우리가 읽을 수 있는 문자 즉 String으로 보려면 문자표를 지정해주어야 한다. 위 내용처럼 UTF_8 Charset을 지정해주면 된다!

문자전송

profile
개린이

0개의 댓글