반응형
이 글은 이지업 - 포토그램 만들기 수업을 토대로 작성하였습니다.
1. http header란?
웹 서버 및클라이언트 사이에서, - 일반 문서데이터(바디 본문) 이외에, 추가적인정보를 교환할 수 있도록, - HTTP 메세지 선두에 삽입되는 요소로 수십개의 다양한 종류를 갖음
헤더 정보에 Content-Type도 담긴다.
대표적인 3가지 Content-Type은 아래와 같다.
- x-www-form-urlencoded (스프링부트는 기본적으로 이 타입을 파싱해준다.) <key=value 형태>
- text/plain <안녕하세요 형태>
- application/json <{"username" : " junfe"} 형태>
HttpBodyController.java 전체 코드
import org.slf4j.Logger; import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import com.cos.controllerdemo.domain.User;
@RestController
public class HttpBodyController {
// 로그를 찍어줌.
private static final Logger log = LoggerFactory.getLogger(HttpBodyController.class);
@PostMapping("/body1")
public String xwwwformurlencoded(String username) {
log.info(username);
return "key=value 전송옴.";
}
@PostMapping("/body2")
public String textplain(@RequestBody String data) {
//평문.
log.info(data);
return "plain/text 전송옴.";
}
@PostMapping("/body3")
public String applicationjson(@RequestBody String data) {
log.info(data);
return "json 전송옴.";
}
@PostMapping("/body4") // json데이터를 자바 object로 바로 받음.
public String applicationjsonToObject(@RequestBody User user) {
log.info(user.getUsername());
return "json 전송옴.";
}
}
postman을 이용해서 각각 data를 전달해보고 결과를 보자.
- x-www-form-urlencoded 로 data 전달 및 결과
2. text/plain 을 이용한 data 전달 및 결과
3. application/json 을 통한 data 전달 및 결과
그런데 json에서는 원하는 값만 얻어 올 수가 없고 통으로 표기된다. json 데이터를 바로 받아오기 위해서 User 클래스를 추가하고 4번째 메소드를 생성해보자.
User.java 코드
public class User {
private String username;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
4번째 메소드는 전체 코드에 적혀있는 applicationjsonToObject 메소드이다.
이를 실행해보면 결과는 다음과 같다.
json 데이터를 java object 로 바로 받아오는 것을 확인할 수 있다.
반응형
'Programming > Spring' 카테고리의 다른 글
SPRING과 SPRING BOOT의 차이점 (0) | 2021.08.01 |
---|---|
[spring boot] http 요청 file로 응답 (0) | 2021.06.15 |
[spring boot] json 응답하기 (0) | 2021.06.08 |
[spring boot] controller - 쿼리스트링, 주소변수매핑 (0) | 2021.06.07 |
[spring boot]http 4가지 요청 방식 (0) | 2021.06.07 |