본문 바로가기
springboot 수업일지

2일차(2) @RestController / @RequestBody

by wannabe 2021. 6. 24.

<HTTP 1.1 프로토콜(http 메서드)>

C(create)R(read)U(update)D(delete)라고 한다.

*GET => select => request 에 body 필요 없음. request content-type x

*POST => insert => request에 body있어야 함. request content-type o

*PUT => update => request에 body있어야 함. request content-type o

*DELETE => delete => request에 body 필요 없음. request content-type x

1. 위 요청(post,put,delete)을 테스트 하는 프로그램 다운로드 : postman

다운로드 후, google아이디로 로그인(sign in)

로그인 완료!

go to workspace 클릭!!

▶먼저, 기존에 작성되었던 Spring 코드를 다음과 같이 수정한다.

▶GET

▶POST

▶DELETE

DELETE => delete => request에 body 필요 없음. request content-type x

hidden 클릭!!

▶POST타입을 자세히 보자

POST => insert => request에 body있어야 함. request content-type o

request에서 content-type 을 확인!!

key=value &key=value 이렇게 pasing하도록!

username=ssar&password=1234

코드를 다음과 같이 수정하고 console창 확인하면?

IT통신에서는 JSON 이 공용어이다!!

▶PUT타입

위와 같이 Body 설정을 하고 보내고나서,

아래와 같이 Header확인을 하면, content-type은 text/plain으로 나오는것을 알 수 있다.

그러면, 위에 Body에서 작성한 "hello"를 spring에서 확인하려면???

spring에서 코드를 다음과 같이 작성한다. 그러나!!! null이 된다. 왜??parsing 형식이 String data를 불러오도록 되어있지 않아서..

key=value &key&value 이렇게 pasing하도록! 되어있는 상태임.

bufferdReader 개념정리

=> spring에서는 bufferdReader를 읽기만 하면 된다!!

자바 엔진인 JVM이 @RequestBody 라는 annotation을 읽음

이러한 힌트를 보고나서 data를 bufferedReader그대로 읽어서 가져온다.

원시 그대로 읽어들임!!!

결과는?? 다음과 같이, 콘솔창에 hello 가 출력됨

그리고나서 postman에서 JSON으로 선택하고 해당 코드를 넣고 Send하면??

결과는?? 원시그대로 출력된다.

그리고,

User 클래스를 생성한다.

getter,setter를 만드는 이유는??

다음과 같이 코드 수정후,

(User라는 클래스의 object로 데이터를 받아서 출력하도록)

postman에서 put방식으로 send하면?? console창에 다음과 같이 출력된다.

java Object로 parsing되어서 출력된다.

▶POST로 보낼때도 오브젝트화 해서 보내보자

결과는???

<정리>

1.변수로 받는다

2.Object화 해서 받는다

3.bufferedReader로 해서 받는다.