- http 요청 방식에는 대표적으로 4가지가 있습니다.
- get : 데이터를 받아오기 위함
- post : 데이터를 추가하기 위함
- put : 데이터를 변경하기 위함
- delete : 데이터를 삭제하기 위함
- 이번 시간에는 위와 같은 http 요청을 실습해보도록 하겠습니다.
- 우선 새로운 클래스 파일을 만들고 다음과 같이 구현해주었습니다.
- 이제 서버를 실행시키고 웹 브라우저에서 경로를 입력하여 테스트 해봅니다.
- get 요청의 경우 위처럼 잘 동작하는 것을 확인할 수 있으나, 나머지 post, put, delete 요청은 동작하지 않을 것입니다. 그 이유는 웹 브라우저로는 get 요청만 할 수 있기 때문입니다.
- 따라서 나머지 요청을 테스트해보기 위해 프로그램을 따로 마련해주었습니다.
- 해당 앱은 서버로 요청을 보낼 때 유용하게 테스트 할 수 있는 앱으로 크롬 확장프로그램으로써 사용할 수 있습니다.
- Postman을 통해 다음과 같이 post 요청을 해보았습니다.
- 나머지 요청들도 위처럼 간단하게 테스트 해볼 수 있으며 요청에 대한 응답이 적절히 출력되는 것을 확인할 수 있을 것입니다.
- 이번에는 실질적인 데이터를 서버로부터 요청하거나 추가하는 작업을 테스트해보고자 합니다.
1. GET
- 우선 현재 따로 준비되어 있는 데이터베이스가 없으니 임의로 클래스를 생성하여 변수를 정의해주고, 생성자와 Getter, Setter를 구현해주겠습니다.
- 다음으로 HttpControllerTest 클래스로 돌아와 getTest() 함수를 다음과 같이 변경해주었습니다.
- 이는 url에서 쿼리 스트링을 통해 데이터를 받아온 뒤, 해당 데이터를 출력하는 구문입니다. 따라서 우리는 서버에 요청을 할 때 다음과 같은 형식으로 요청할 수 있습니다.
- 만약 id 말고도 다른 데이터들을 함께 보내고 싶다면 다음과 같이 '&'를 사용할 수도 있습니다.
- 위 방법을 사용하여 각각의 데이터를 받아올 수도 있겠으나, 아래와 같이 객체로 받아올 수도 있습니다.
2. POST
- 이번에는 post 요청을 해보겠습니다. post는 데이터를 추가하기 위한 요청으로써 서버에서는 추가시킬 데이터를 받아와야 할 것입니다. 즉 다음과 같이 코드를 구현할 수 있습니다.
- 단, post 요청을 할 경우에는 get 요청과 같이 쿼리 스트링을 통한 데이터 전송을 할 수 없습니다.
- post 요청은 데이터를 주소에 붙여 전송하는 것이 아닌, 'Body'라는 공간에 담아서 전송합니다. 이때 전송하는 방법으로는 크게 두 가지 방법이 있습니다.
- 첫 번째 방법은 'x-www-form-urlencoded' 방식으로 전송하는 방법으로 이는 html에서 <form> 태그를 통해 데이터를 요청하는 것과 동일한 방법입니다. 따라서 Postman 앱에서는 다음과 같이 데이터를 전송할 수 있습니다.
- 두 번째 방법은 'raw' 방식으로 전송하는 방법으로 이는 text 또는 JSON 형태로 데이터를 요청하는 방법입니다. Postman 앱에서는 다음과 같이 데이터를 전송할 수 있습니다.
- 위 예제는 MIME 타입이 'text/plain'으로써 평문을 보낸 것입니다. 여기서 MIME 타입이란 클라이언트에게 전송된 문서의 다양성을 알려주기 위한 메커니즘으로써, 브라우저들이 리소스를 내려받았을 때 해야 할 기본 동작이 무엇인지를 결정하기 위해서 사용합니다.
- 이번에는 MIME 타입을 'application/json'으로 하여 JSON 데이터를 전송해보겠습니다.
- 서버 코드를 다음과 같이 수정한 뒤, Postman에서는 데이터를 JSON 형태로 전송해주었습니다.
- 즉, 위의 결과로 알 수 있는 것은 스프링은 데이터가 전송되면 해당 데이터를 받아 자동적으로 그것을 해석하여 객체화하여 준다는 것입니다. 여기서 데이터를 해석하는 기능은 MessageConverter가 수행합니다. 위에서 테스트하였던 get 요청에서 쿼리 스트링으로 받아온 데이터를 매핑해주는 것 또한 MessageConverter가 수행한 것입니다.
- 위와 마찬가지로 put과 delete 요청 역시 동일한 방법으로 수행할 수 있을 것입니다.
📌 References
'🚗 Backend Toy Project > 스프링 부트 게시판' 카테고리의 다른 글
[스프링부트 게시판] 6. yml 설정하기 (0) | 2022.05.01 |
---|---|
[스프링부트 게시판] 5. lombok 세팅 및 테스트 (0) | 2022.05.01 |
[스프링부트 게시판] 3. Git 설치 및 GitHub 연동 (0) | 2022.04.30 |
[스프링부트 게시판] 2. MySQL 세팅 (0) | 2022.04.30 |
[스프링부트 게시판] 1. 의존성 설정 (0) | 2022.04.29 |