본 포스트는 스프링 MVC 1편(김영한, 인프런) 강의를 통해 학습한 내용을 작성자 임의 대로 요약 및 정리한 것입니다.
HTTP API에서 주로 사용하는 JSON 형식으로
데이터를 전달해보자.
1. JSON 형식 전송
- POST 방식
=>http://localhost:8080/request-body-json
- content-type
application/json
- message body
{"username": "hello", "age": 20}
- 결과
{"username": "hello", "age": 20}
2. JSON 형식 파싱 추가
JSON 형식으로 파싱 되도록
객체를 하나 생성하기!
/main/~/hello.servlet/basic/
에서
HelloData.java
를 다음과 같이 작성.
1
2
3
4
5
6
@Getter @Setter
public class HelloData {
private String username;
private int age;
}
/main/~/hello.servlet/basic/request
에서
RequestBodyJsonServlet.java
를
다음과 같이 작성.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@WebServlet(name = "requestBodyJsonServlet",
urlPatterns = "/request-body-json")
public class RequestBodyJsonServlet 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);
}
}
그런 뒤에 postman에서
POST 메서드로
http://localhost:8080/request-body-json
주소로
body
에는 다음과 같이 입력.
1
{"username": "hello", "age": 20}
raw
체크, JSON
선택!
그런 뒤 “Send”로 전송을 하면
서버 로그에 아래와 같이 찍힌다.
1
messageBody = {"username": "hello", "age": 20}
2.1. 스프링에서 JSON 파싱하기
JSON을 사용가능한 자바 객체로 변환하려면
–> Jackson, Gson 등의 JSON 변환 라이브러리 사용.
스프링 부트에서는 Jackson 라이브러리 제공함.
(ObjectMapper
)
이 라이브러리를 이용해서
다음과 같이 코드 작성.
1
2
3
4
5
6
7
8
9
10
11
protected void service(~~){
~~~~
HelloData helloData
= objectMapper.readValue(messageBody,
HelloData.class);
System.out.println("helloData.getUsername = "
+ helloData.getUsername());
System.out.println("helloData.getAge = "
+ helloData.getAge());
~~~~
}
그리고 실행한 뒤에
postman으로 똑같이 전송하면
서버 로그에 아래와 같이 찍힌다.
1
2
helloData.getUsername = hello
helloData.getAge = 20