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 |