스프링/3. 스프링 MVC

13. HTTP API JSON

sdafdq 2023. 8. 4. 23:14

json 형식으로 보낼거임.

{"username""hello""age"40}
 
포스트 맨으로 쉽게 보낼 수 있음.
 
먼저, 보통 객체로 바꿔서 씀.
 
 
//@Getter @Setter
public class HelloData {
    private String username;
    private int age;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

getter, setter를 이용해야 함. 그래서 만들어 줘야 함.

롬복 기능 쓰면, 직접 이렇게 get,set 안만들어도 만들어 진걸로 됨.

 

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

        HelloData helloData = objectMapper.readValue(messageBody, HelloData.class);
        response.getWriter().write("username: " + helloData.getUsername());
        response.getWriter().write("age: " + helloData.getAge());
        System.out.println("username: " + helloData.getUsername());
        System.out.println("age: " + helloData.getAge());
    }
}

spring의 jackson 라이브러리에는, json 다루기 굉장히 편한 라이브러리임. ObjectMapper

말 그대로, 오브젝트로 맵핑해주는 거임.

 

일단은 결국은 바이트로 먼저 받아야 함.

바이트 받고, String 형식으로 전환해 준 다음에,

 

objectMapper에 읽어들일 데이터와, 읽어서 바꿀 형태를 넣음.

 

그냥 저렇게 한 다음에 저 객체로 쓰면 됨.

'스프링 > 3. 스프링 MVC' 카테고리의 다른 글

15. http 응답 방식  (0) 2023.08.05
14. HttpServletResponse  (0) 2023.08.05
12. HTTP API 요청 데이터  (0) 2023.08.04
11. html form, POST 요청 정보.  (0) 2023.08.04
10. GET 요청 정보  (0) 2023.08.04