본문 바로가기
Framework & Library/Spring Boot

[Spring Boot] : HTTP message body를 통한 데이터 전송, 파라미터 조회

by 오주현 2022. 1. 19.
반응형

HTTP message body

HTTP API에서 주로 사용한다. JSON, XML, TEXT

데이터 형식은 주로 JSON을 사용한다.

@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();
        String messageBody = StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8);

        System.out.println("messageBody = " + messageBody);

        response.getWriter().write("ok");

    }
}

inputStream은 byte 코드를 반환하기 때문에 문자표(UTF-8로 설정)를 지정해 줘야 한다.

먼저 간단한 TEXT 메시지를 HTTP 메시지 바디에 담아서 전송을 해본다.

Postman을 통해 OH JU HYEON을 보내봤다.

잘 읽혀오는 것을 확인할 수 있다.

JSON 형식으로 데이터를 전달할 수도 있다.

먼저 JSON 형식으로 파싱할 수 있게 객체를 하나 생성해 준다.

package hello.servlet.basic;

import lombok.Getter;
import lombok.Setter;

@Getter @Setter
public class HelloData {

    private String username;
    private int age;
}

원래는 Getter, Setter를 다 설정해 줬는데 lombok 라이브러리를 사용하여 어노테이션 추가로 대체할 수 있게 되었다.

@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");
    }

}

JSON 결과를 파싱해서 사용할 수 있는 자바 객체로 변환하기 위해 변환 라이브러리를 추가해서 사용해야 하는데 스프링 부트로 MVC를 선택해서 프로젝트를 생성해 줬기 때문에 기본으로 Jackson 라이브러리를 함꼐 제공한다. 때문에 ObjectMapper를 사용할 수 있다.

Postman으로 JSON 타입의 데이터를 실행해봤다.

데이터가 정상적으로 조회된다.

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술을 참고하여 공부한 내용입니다.

반응형

댓글