자바생
article thumbnail
728x90

HTTP 요청 데이터

클라이언트에서 서버로 http 요청 메시지를 통해 데이터를 전달하는 방법을 크게 3가지로 나눠볼 수 있다.

1. GET - 쿼리 파라미터

2. POST - HMTL Form

3. HTTP message body

 


GET - 쿼리 파라미터

이 방법은 url의 뒤에 ? 붙이고 쿼리 파라미터를 작성하면 된다.

http://localhost:8080/request-param?username=kim&age=20

이러한 방식으로 작성하게 되면 username에는 kim, age에 20이 저장된다.

그리고 content-type은 존재하지 않는다. 

 

username과 age를 파라미터라고 하는데, 파라미터를 조회할 수 있는 방법이 있다.

대체적으로 getParameter라는 메서드를 사용하여 파라미터의 값을 조회한다.

여기서 파라미터 이름은 같은데 값이 여러 개일 경우가 있다.

즉, username=kim&username=lee가 올 수 있다. 

단일 파라미터를 조회할 경우에는 첫 번째 값을 반환한다.

그래서 전체 파라미터를 조회하고 싶다면 getParameter가 아닌 getParameterValues 메서드를 사용하면 된다.


POST - HTML Form

HTML Form을 이용하여 데이터를 POST하는 방식이다.

1번과 비슷하게 쿼리 파라미터 형식을 사용하지만, 1번과 다르게 content-type이 있고, 메시지 바디에 쿼리 파라미터 형식으로 데이터를 전달한다. ( 1번은 메시지 바디가 없음 )

HTML Form도 쿼리 파라미터 형식을 사용하기 때문에 파라미터를 조회할 때, 1번과 같이 getParameter 메서드를 사용할 수 있다.

 


API 메세지 바디(단순 메시지)

HTTP 메시지 바디의 데이터는 InputStream을 사용해서 읽을 수 있다.

단순 메시지는 content-type : text/plain 이다.

 


API 메세지 바디(JSON)

이번에는 JSON 형식으로 데이터를 전달한다.

json형태는 content-type : application/json이다.

 

위와 똑같이 InputStream을 사용하지만, ObjectMapper클래스를 사용한다.

JSON의 결과를 InputStream으로 읽으면 messageBody = {"username":"kim","age":10} 가 된다.

메시지 바디를 파싱하여 자바 객체로 변환하려면 JSON 변환 라이브러리를 추가해서 사용해야하는데, 

이 때 ObjectMapper를 사용하면 된다.

 

objectMapper에 messageBody를 넣고, 변환할 객체 클래스를 넣어주면 ObjectMapper에서 알아서 파싱을 해주는 것 같다. 

그래서 각 변수에 ( username, age )에 값을 넣어주는 것 같다.

 


HTTP 응답 데이터

http 응답 데이터는 HTTP 응답코드를 지정해주고, 헤더와 바디를 생성해야한다.

크게 3가지로 나눌 수 있다.

1. 단순 텍스트 응답

2. HTML 응답

3. HTTP API - MessageBody JSON 응답

 


HTML

HTTP 응답으로 html을 반환할 때는 text/html로 content-type을 지정해야한다.

그래서 해당 url로 맵핑을 하게 되면 안녕?이라는 string이 보인다. 그러나 이것은 string이 아니다.

페이지 소스보기를 하면 html 소스 코드를 볼 수 있다.


HTTP 응답 데이터 - API JSON

 

1번에서는 위와 같이 content-type을 지정해주어야 하는데, json은 application-json로 지정해야한다.

아까 http 요청 데이터를 볼 때에는 json 형식 데이터를 보내게 되면 ObjectMapper에 있는 readValue 메서드를 통해 각각 username, age에 파싱되었다.

하지만 응답 데이터에서는 HelloData 객체를 만들고, 각각 username과 age에 값을 넣어, ObjectMapper 를 통해 데이터를 json 형식으로 바꾼다.


출처 : 인프런 스프링 MVC 1편(김영한 강사님)

728x90

'Spring 강의 > 스프링 MVC 1' 카테고리의 다른 글

MVC 1 - 구조 이해  (0) 2021.09.27
MVC 1 - MVC 프레임워크 만들기  (0) 2021.09.18
MVC 1 - 서블릿, JSP, MVC 패턴  (0) 2021.09.14
MVC 1 - 웹 애플리케이션 이해  (0) 2021.09.10
profile

자바생

@자바생

틀린 부분이 있다면 댓글 부탁드립니다~😀

검색 태그