오봉이와 함께하는 개발 블로그
스프링 MVC 1 - HTTP 요청 데이터 API 메시지 바디 TEXT, JSON 본문
728x90
HTTP 요청 데이터 - API 메시지 바디 - 단순 텍스트
- HTTP message body에 데이터를 직접 담아서 요청한다.
- HTTP API에서 주로 사용
- JSON, XML, TEXT
- 데이터 형식은 주로 JSON 사용
- POST, PUT, PATCH 메서드에서 주로 사용한다
- HTTP API에서 주로 사용
- 가장 단순한 텍스트 메시지를 HTTP 메시지 바디에 담아서 전송하고 읽어보자.
- HTTP 메시지 바디의 데이터를 InputStream을 사용해서 직접 읽을 수 있다.
코드
- Postman을 통해 다음 코드를 테스트 해보자
- POST
- body 탭
- raw 데이터
- 내용 입력
- raw 데이터
@WebServlet(name = "requestBodySpringServlet", urlPatterns ="/request-body-string")
public class RequestBodySpringServlet 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); // 바이트 코드를 문자열로 바꿔주는 메서드
// 바이트 코드를 문자열로 바꿀 때는 문자표를 지정해야 한다. 여기서는 StandardCharsets.UTF_8
System.out.println("messageBody = " + messageBody);
response.getWriter().write("ok");
}
}
- 참고
- inpustStream은 byte 코드를 반환한다.
- byte 코드를 우리가 읽을 수 있는 문자로 보려면 문자표(Charset)을 지정해주어야 한다.
- 여기서는 UTF_8을 지정했다.
HTTP 요청 데이터 - API 메시지 바디 - JSON
HTTP API에서 주로 사용하는 JSON 형식으로 데이터를 전달해보자.
- JSON 형식 전송
- POST : http://localhost:8080/request-body-json
- content-type: application/json
- message body: {"username": "hello", "age": 20}
- 결과: messageBody = {"username": "hello", "age": 20}
JSON 형식 파싱 추가
JSON 형식이기 때문에 JSON 형식의 데이터를 객체로 바꿀 수 있도록 파싱할 수 있게 객체를 생성하자.
hello.servlet.basic.HelloData
@Getter @Setter
public class HelloData {
private String username;
private int age;
}
코드, 결과
@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.getUsername() = " + helloData.getUsername());
System.out.println("helloData.getAge() = " + helloData.getAge());
response.getWriter().write("ok");
}
}
- Postman으로 실행해보자
- POST : http://localhost:8080/request-body-json
- content-type: application/json (Body raw, 가장 오른쪽에서 JSON 선택)
- message body: {"username": "hello", "age": 20}
messageBody = {"username": "hello", "age": 20}
helloData.getUsername() = hello
helloData.getAge() = 20
참고
JSON 결과를 파싱해서 사용하 수 있는 자바 객체로 변환하려면 Jackson, Gson 같은 JSON 변환 라이브러리를 추가해서 사용해야 한다.
스프링 부트로 Spring MVC를 선택하면 기본으로 Jackson을 제공한다.
HTML Form 데이터도 메시지 바디를 통해 전송되므로 직접 읽을 수 있다.
하지만 편리한 request.getParameter()
을 제공하기 때문에 제공하는 기능을 사용하자.
출처 : 인프런 김영한 지식 공유자님 강의 - 스프링 MVC 1편 백엔드 웹 개발 핵심 기술
728x90
'BE > Servlet' 카테고리의 다른 글
스프링 MVC 1 - 회원 관리 웹 애플리케이션 요구사항 (0) | 2022.08.11 |
---|---|
스프링 MVC 1 - HttpServletResponse 사용법 (0) | 2022.08.10 |
스프링 MVC 1 - HTTP 요청 데이터 POST HTML Form (0) | 2022.08.10 |
스프링 MVC 1 - HTTP 요청 데이터 개요, GET 쿼리 파라미터 (0) | 2022.08.10 |
스프링 MVC 1 - HttpServletRequest 개요, 기본 사용법 (0) | 2022.08.09 |
Comments