Spring뿌시기/5주차 - 스프링 MVC 1편

서블릿 - HTTP 요청 데이터(HTTP messagebody)

ykm1256 2022. 11. 4. 06:54

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

  • HTTP API에서 주로 사용(JSON, XML, TEXT)
  • 데이터 형식은 주로 JSON 사용
  • POST, PUT, PATCH

단순 텍스트 전송

  • 가장 단순한 텍스트 메시지를 HTTP 메시지 바디에 담아서 전송할 수 있다.
  • 데이터는 InputStream을 사용해서 직접 읽을 수 있다.
  • POST http://localhost:8080/request-body-string
  • content-type : text/plain
  • message body : hello
ServletInputStream inputStream = request.getInputStream();
String messageBody = StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8);
System.out.println("messageBody = " + messageBody);

 

JSON 형식 전송

  • POST http://localhost:8080/request-body-json
  • content-type : application/json
  • message body : {"username" : "hello", "age" : 20}

JSON 데이터 파싱

@Getter @Setter
public class HelloData {
    private String username;
    private int age;
}
  • 데이터를 담을 HelloData 객체 생성
  • lombok@Getter, @Setter 애노테이션을 사용하여 getter, setter를 구현하지 않고 사용
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);
    
    HelloData helloData = objectMapper.readValue(messageBody, HelloData.class);
    System.out.println("helloData.username = " + helloData.getUsername());
    System.out.println("helloData.age = " + helloData.getAge());
    ...
  • ObjectMapper객체를 사용하여 JSON 데이터를 파싱하여 사용한다.
  • 먼저 getInputStream()으로 JSON 데이터를 가져온다.
  • 그리고 StreamUtils.copyToString() 메서드로 데이터를 String 형태로 변환한다.
  • 그리고 objectMapper의 readValue() 메서드를 통해 위에서 만든 HelloData 객체타입으로 데이터를 받는다.
JSON 결과를 파싱해서 사용할 수 있는 자바 객체로 변환하려면 Jackson, Gson 같은 JSON 변환 라이브러리를 추가해서 사용해야 한다. 스프링 부트로 Spring MVC를 선택하면 기본으로 Jackson 라이브러리( ObjectMapper )를 함께 제공한다.

HTML Form 데이터도 메시지 바디를 통해 전송되므로 직접 읽을 수 있지만 편리한 메서드 들이 있으므로 메서드를 사용하면 된다.

 

 

 

 

 


출처

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1

 

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 인프런 | 강의

웹 애플리케이션을 개발할 때 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 MVC의 핵심 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., -

www.inflearn.com