반응형

이 글은 이지업 - 포토그램 만들기 수업을 토대로 작성하였습니다.

 

1. http header란?

웹 서버 및클라이언트 사이에서, - 일반 문서데이터(바디 본문) 이외에, 추가적인정보를 교환할 수 있도록, - HTTP 메세지 선두에 삽입되는 요소로 수십개의 다양한 종류를 갖음

 

헤더 정보에 Content-Type도 담긴다.

대표적인 3가지 Content-Type은 아래와 같다.

  1. x-www-form-urlencoded (스프링부트는 기본적으로 이 타입을 파싱해준다.) <key=value 형태>
  1. text/plain <안녕하세요 형태>
  1. 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를 전달해보고 결과를 보자.

  1. x-www-form-urlencoded 로 data 전달 및 결과
postman을 통한 data 전달.

 

결과

 

2. text/plain 을 이용한 data 전달 및 결과

data 전달

 

결과

 

3. application/json 을 통한 data 전달 및 결과

jason 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 data를 java object로 바로 받아온다.

 

json 데이터를 java object 로 바로 받아오는 것을 확인할 수 있다.

 

 

 

 

반응형

+ Recent posts