이번에는 HTTP API에서 주로 사용하는 JSON 형식으로 데이터를 전달해보자.
JSON 형식 전송
POST httmp://localhost:8080/request-body-json
content-type : application/json
message body : {"username": "hello", "age": 20}
결과 messageBody = {"username": "hello", "age": 20}
JSON 형식으로 파싱할 수 있게 객체를 하나 생성해야한다.
package hello.servlet.Basic;
import lombok.Getter;
import lombok.Setter;
@Getter @Setter
public class HelloData {
private String username;
private int age;
}
Lombok 라이브러리 덕분에 getter, setter를 안만들어줘도 된다.
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 = "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.username = " + helloData.getUsername());
System.out.println("helloDat.age = " + helloData.getAge());
response.getWriter().write("OK");
}
}
처음에는 messageBody만 콘솔에 찍어보는데 저번에 했던 바디에 메시지 적는 방식과 동일하다 그 이유는
JSON도 텍스트이기 때문이다.
하지만 Jackson라이브러리를 사용하여 미리 만든 클래스에 매핑시켜 파싱을 한 후 get해보았더니 Json 형태로
알아볼 수 있었다.


'웹프로그래밍 > 스프링 MVC' 카테고리의 다른 글
| 16. HTTP 응답 데이터 - 단순 텍스트, HTML (0) | 2022.03.16 |
|---|---|
| 15. HttpServletResponse - 기본 사용법 (0) | 2022.03.16 |
| 13. HTTP 요청 데이터 - API 메시지 바디 - 단순 텍스트 (0) | 2022.03.16 |
| 12. HTTP 요청 데이터 - POST HTML Form (0) | 2022.03.16 |
| 11. HTTP 요청 데이터 - GET 쿼리 파라미터 (0) | 2022.03.15 |












