티스토리 뷰

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

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


-- 먼저 가장 단순한 텍스트 메시지를 HTTP 메시지 바디에 담아서 전송하고, 읽어보자
-- HTTP 메시지 바디의 데이터를 inputStream을 사용해서 직접 읽을 수 있다.


JSON 결과를 파싱해서 사용할 수 있는 자바 객체로 변환하려면
Jackson, Gson 같은 JSON 변환 라이브러리를 추가해서
사용해야 한다. 스프링 부트로 Spring MVC를 선책하면 기본으로 Jackson 라이브러리를 함께 제공한다

참고
HTML form 데이터도 메시지 바디를 통해 전송되므로 직접 읽을 수 있다.
하지만 편리한 파라미터 조회기능을 이미 제공하기 때문에
파라미터 조회기능을 사용하면 된다.

파싱 : json 으로 온 데이터를 vo에 넣는 것

package hello.servlet.basic.request;

import com.fasterxml.jackson.databind.ObjectMapper;
import hello.servlet.basic.HelloData;
import org.springframework.util.StreamUtils;

import javax.servlet.ServletException;
import javax.servlet.ServletInputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.nio.charset.StandardCharsets;

@WebServlet(name="reqeustBodyJsonServlet" , 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);

        //받은 messageBody에 json 데이터를 vo에 넣을 수 있게 변환
        HelloData helloData = objectMapper.readValue(messageBody, HelloData.class);

        System.out.println("helloData = " + helloData.getUserName());
        System.out.println("helloData = " + helloData.getAge());

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

'dev_공부일지 > Servlet' 카테고리의 다른 글

간단한 회원관리 서블릿 만들기  (0) 2021.09.09
ContentType  (0) 2021.09.09
HttpServletResponse - 기본 사용법  (0) 2021.09.08
HTTP 요청 데이터  (0) 2021.09.05
HttpServletRequest 역할  (0) 2021.09.02
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
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 28 29 30 31
글 보관함