본문 바로가기
프로그래밍/SpringMVC_1

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

by ILove_NS_MoKa 2024. 1. 22.

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

-HTTP message body에 데이터를 직접 담아서 요청
      HTTP API에서 주로 사용, JSON, XML, TEXT 
       데이터 형식은 주로 JSON 사용
       POST, PUT, PATCH


먼저 가장 단순한 텍스트 메시지를 HTTP 메시지 바디에 담아서 전송하고, 읽어보자. 


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

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package hello.servlet.basic.requset;
 
import jakarta.servlet.ServletException;
import jakarta.servlet.ServletInputStream;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.util.StreamUtils;
 
import java.io.IOException;
import java.nio.charset.StandardCharsets;
 
@WebServlet(name = "requestBodyStringServlet", urlPatterns = "/request-body-string")
public class RequestBodyStringServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //ctrl+alt+v 변수만들기
        //바디의 내용을 바이트 코드로 바로 얻을수 있다
        //바이트 코드를 스트링으로 바꿔준다
        ServletInputStream inputStream = request.getInputStream();
        String messageBody = StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8);
        System.out.println("messageBody = " + messageBody);
 
        response.getWriter().write("OK");
    }
}
cs

 

 

Postman을 사용해서 테스트 해보자.

 

-참고-
inputStream은 byte 코드를 반환한다. byte 코드를 우리가 읽을 수 있는 문자(String)로 보려면 문자표 
(Charset)를 지정해주어야 한다. 여기서는 UTF_8 Charset을 지정해주었다.


문자 전송
POST http://localhost:8080/request-body-string 
content-type: text/plain
message body: hello
결과: messageBody = hello