[Spring] HTTP 요청 / 응답 데이터

19·2022년 12월 4일
0

Spring

목록 보기
18/29
post-custom-banner

HTTP 요청 데이터

HTTP 요청 메시지를 통해 클라이언트에서 서버로 데이터를 전달하는 방법에는 3가지가 있다

GET - 쿼리 스트링(파라미터)

URL 뒤에 쿼리 스트링에 데이터를 포함해서 서버에 전달하는 방식이다.
EX) 검색, 필터, 페이징등에서 사용


POST - HTML Form

'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>
  • '전송'버튼을 누르면 action에 기입된 주소, 명시한 method로 요청을 보낸다.
  • HTTP 요청 메시지 바디에 'username', 'age'값이 저장되어 있다.
    • 이 값은 쿼리 스트링 형식으로 담겨서 서버에 전달된다.

HTTP message body

직접 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);
  • HTTP 요청 메시지 바디의 JSON을 HelloData라는 객체로 변환(ObjectMapper 사용)해줄 수 있다.

이와 같이 해주려면 Jackson같은 JSON 변환 라이브러리가 필요하다.
스프링 부트에서 Spring MVC를 추가하면 Jackson 라이브러리 (ObjectMapper)를 제공해서 변환해준다.


HTTP 응답 데이터

HTTP 응답 메시지를 통해 서버에서 클라이언트로 데이터를 전달하는 방법에는 3가지가 있다

단순 텍스트 응답

'content-type: text/html'


HTML 응답

'content-type: text/html'


HTTP API - MessageBody JSON 응답

자바 객체를 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);
  • 자바 객체 -> JSON으로 변환



참고

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 김영한

profile
하나씩 차근차근
post-custom-banner

0개의 댓글