Day91 - [Spring]REST API(Rest Controller)

2021. 6. 24. 22:36Spring

이번에는 REST API 에 대해서 알아 봅시다.

 

REST API

REST API 는 비동기 서버 라고 생각을 하시면 되겠습니다.

 

REST API 를 사용해서, 데이터(객체)를 반환할 수도 있고, 데이터(객체)를 전달 받을 수도 있습니다.

 

REST API 는 @RestController 를 사용하는 데요

 

지금까지의 spring mvc 구조에서는 컨트롤러에서 뷰 리졸버로 view 에 대한 데이터를 전달해 주었는데, @RestController 는 해당 페이지로 요청한 클라이언트에게 특정한 데이터(객체)를 돌려 줍니다.

 

이를 실습해 보기 위해서, "크롬 웹스토어" 에 들어가서 "Yet Another Client" 를 설치해 주세요

설치를 완료하면 브라우저 창 오른쪽 상단에, 아래와 같이 나옵니다

클릭을 하면, 새로운 브라우저 창에 아래와 같이 나올 겁니다.

그러면 실습할 준비는 모두 끝이 났습니다.

 

이제, 아래처럼 클래스 ( 컨트롤러 ) 를 만들어 주세요.

이렇게 작성이 완료 되었다면, 서버를 실행시켜 주세요 ( 저는 Tomcat )

이제 REST Client 로 가서, URL을 http://localhost:(포트번호)/프로젝트명/getText 쓰고 아래의 Send Request 를 누르면 아래처럼, 데이터를 받아 올 수 있습니다.

REST API 는 기본적으로, json(객체) 를 반환하기 때문에, json 형태가 아니고, Text 를 반환시키려면 produces = "text/plain" 을 작성 해줍니다.

 

그리고, 요청이 들어왔기 때문에,  제 이클립스 에서는 실행됐다 고 문자열을 출력했습니다 ( system.out.println )

이렇게, REST API 는 비동기로 서버에 요청하고 반환받는 서버 입니다.

 

이번에는, json(객체) 를 반환 받아 봅시다.

 

JAVA 에서 json 을 사용하려면, jackson 라이브러리가 반드시 필요합니다.

아래의 코드를 "pom.xml" 추가하고, Maven Update를 해줍시다.

위의 과정이 완료가 되었다면, 컨트롤러에 아래의 코드를 추가 시켜 줍시다.

※ TestVO 는 name, age, date, birth 를 멤버변수로 가지고 있습니다

이제 또 REST Client 에서 요청 해 봅시다.

이번에는 json 의 형태로 값을 반환 받았습니다.

 

이번에는 데이터를 전달해 볼까요?  데이터를 받을 때는 @RequestParam 을 사용합니다.

데이터를 여러개 받고 싶다면 아래의 코드처럼 @PathVariable 을 사용 합니다.

 

어디서 많이 본 것 같은 형태죠? fetch 할 때 비동기 API URL 하고 똑같은 형태 입니다.

 

Get 방식은, 전달하는 데이터의 내용을 produces 에 작성 합니다.

 

지금까지 사용한 예제들을 보면, 다 Get 방식으로 요청이 들어왔죠?

 

REST API 의 전송은 POST, GET, PUT, DELETE 가 있으며, 각각 등록, 조회, 수정, 삭제 의 뜻이 있습니다.

 

그래서, GET 방식의 전송이 가장 많이 일어나고, PUT, DELETE 전송은 대부분 막아 놓습니다 ( 다른 누군가가 서버에 접속해서 데이터를 무단 수정, 삭제 할 수 있기 때문에 )

 

POST 방식은 아래처럼 사용 합니다.

POST 방식은, GET 방식과는 달리, URL 에 데이터를 넘기는 것이 아닌, payload 에 데이터를 작성해서 넘겨주어야 합니다.

 

오늘은 이렇게 REST API 에 대해서 간단하게 알아 보았습니다.