HTTP 요청 메시지를 통해 클라이언트에서 서버로 데이터를 전달하는 방법에는 3가지가 있다
URL 뒤에 쿼리 스트링에 데이터를 포함해서 서버에 전달하는 방식이다.
EX) 검색, 필터, 페이징등에서 사용
'content-type: application/x-www-form-urlencoded'
메세지 바디에 쿼리 스트링 형식으로 담겨서 서버에 전달하는 방식이다. username=saka&age=20
EX) 회원가입, 상품주문등, HTML Form 사용하는 곳
HTML Form 예시)
<form action="/reqeust-param" method="post">
username: <input type="text" name="username" />
age: <input type="text" name="age" />
<button type="submit">전송</button>
</form>
직접 HTTP 메세지 바디에 데이터를 담아서 서버에 전달하는 방식이다.
HTTP API에서 주로 사용하며 JSON, XML, TEXT등이 사용된다.
주로 JSON이 사용됨
※ HTTP 메시지 바디의 데이터를 InputStream을 사용해서 직접 읽을 수 있다
단순 텍스트를 보낼 수도 있고, JSON을 보낼 수도 있지만,
단순 텍스트는 거의 보낼 일이 없어서 주로 JSON을 보낸다.
'content-type: application/json'
요청 메세지 바디에는 JSON 형태로 보낸다.
{"username": "hello", "age": 20}
JSON 형태는 자바 객체로 변환해서 사용한다.
@Getter @Setter
public class HelloData {
private String username;
private int age;
}
HelloData helloData = objectMapper.readValue(messageBody, HelloData.class);
이와 같이 해주려면 Jackson같은 JSON 변환 라이브러리가 필요하다.
스프링 부트에서 Spring MVC를 추가하면 Jackson 라이브러리 (ObjectMapper)를 제공해서 변환해준다.
HTTP 응답 메시지를 통해 서버에서 클라이언트로 데이터를 전달하는 방법에는 3가지가 있다
'content-type: text/html'
'content-type: text/html'
자바 객체를 JSON으로 변환해서 응답한다.
요청때와 마찬가지로 'HelloData'를 활용해 자바 객체를 생성하고, JSON 변환 라이브러리인 Jackson (ObjectMapper)를 활용해서 JSON으로 변환해서 응답해준다.
'content-type: application/json'
HelloData helloData = new HelloData();
helloData.setUsername("kim");
helloData.setAge(20);
// json으로 변환
String result = objectMapper.writeValueAsString(helloData);