코드 그라데이션

HTTP 요청 데이터 - API Message Body - 단순 텍스트 본문

Spring/MVC 1

HTTP 요청 데이터 - API Message Body - 단순 텍스트

완벽한 장면 2023. 9. 19. 21:49

HTTP 요청 데이터 - API Message Body - 단순 텍스트

HTTP message body에 데이터를 직접 담아서 요청

  • HTTP API에서 주로 사용, JSON, XML, TEXT
  • 데이터 형식은 주로 JSON 사용 - 예전에는 XML이 많이 쓰였다가 지금은 대부분 JSON 사용.
  • 사용 메서드 : POST, PUT, PATCH

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

 

이런 API들은

  • 서버와 서버가 통신할 때,
  • 앱에서 서버로 요청할 때
  • 웹 클라이언트에서 자바스크립트로 요청할 때

주로 사용한다.

 

 

RequestBodyStringServlet

@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(); // HTTP 요청의 입력 스트림을 얻어온다.
  
	//입력 스트림에서 본문(body) 내용을 읽어와 문자열로 저장
    String messageBody = StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8);

	//읽어온 본문(body) 내용을 콘솔에 출력한다.
    System.out.println("messageBody = " + messageBody);

    response.getWriter().write("ok"); // HTTP 응답에 "ok"라는 메시지를 작성하여 클라이언트에게 응답
  }
}

 

- @WebServlet 어노테이션을 사용하여 /request-body-string 경로로 들어오는 HTTP 요청을 처리하는 서블릿을 정의.
- service 메서드에서는 HTTP 요청 (HttpServletRequest)과 HTTP 응답 (HttpServletResponse)을 처리한다.
- request.getInputStream()을 사용하여 HTTP 요청의 입력 스트림을 얻어옵니다. 이 입력 스트림은 HTTP 요청의 본문(body)을 읽어오는 데 사용된다.
- StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8)를 호출하여 입력 스트림에서 본문 내용을 문자열로 읽어온다. StandardCharsets.UTF_8은 문자열 인코딩을 나타낸다.
- 읽어온 본문(body) 내용을 System.out.println("messageBody = " + messageBody)를 통해 콘솔에 출력한다.
- 마지막으로 HTTP 응답에 "ok"라는 메시지를 작성하여 클라이언트에게 응답을 보낸다.

 

 


Postman으로 테스트하기

 

 

728x90
Comments