본문 바로가기
Develop/Back-End

[Spring Boot] RESTful Web Service 구축하기

by 초코칩프라푸치노 2021. 6. 5.

⊙ Spring Intializer

Spring Intializer를 통해 우리는 쉽고 빠르게 프로젝트를 시작할 수 있다. 가령 팀 단위로 프로젝트를 진행하는 경우, 자바의 버전과 프로젝트의 버전을 맞춰 나갈 수 있어 효율적으로 사용될 수 있다.

 

이 글에서는 다음과 같이 설정하고 web service를 구축하려 한다.

Spring Intializer Link

 

⊙ 목표

1. HTTP GET requests(http://localhost:8080/greeting)를 통해 서비스를 구축한다. 

2. Greeting 문구를 JSON 형태로 표현한다. Ex) {"id":1,"content":"Hello, World!"}

3. Parameter를 통해 name을 맞춤 설정한다.(http://localhost:8080/greeting?name=User)

4. Name parameter의 default 값을 "World"로 설정하고 name=User로 설정하면 다음과 같이 바뀐다. ({"id":1,"content":"Hello, User!"})

 

Resource Representation Class

Spring Initializer 통해 프로젝트와 빌드 시스템을 세팅했다면, Web Service를 구축할 수 있다. 우리가 구현할 JSON형태를 보면 id 필드와 content필드가 있는 것을 알 수 있다. id는 숫자형이기 때문에 long으로 content는 String형태로 표현하면 될 것이다. src/main/java/com/example/restservice 디렉터리에 Greeting.java 파일을 생성해 다음과 같이 코드를 입력하자.

 

 

 Resource Controller

Spring Boot에서 RESTful web service를 구축할 때, HTTP request는 controller에서 작업이 이루어진다. 먼저,  src/main/java/com/example/restservice 디렉터리에 GreetingController.java  파일을 생성해 코드를 다음과 같이 입력하자. 

 

@RestController 어노테이션을 통해 우리는 쉽게 REST 방식으로 Controller라는 것을 명시한다. @GetMapping을 통해 HTTP GET request의 /greeting이 16줄 greeting() 메서드와 매핑된다. @RequestParam은 name parameter를 greeting() 메서드와 연결해준다. 만약 name parameter가 없을 경우, default 값으로 "World"를 넘겨준다.

 

이 메서드의 실행을 통해 counter.incrementAndGet()에 의해 증가한 'id'와 template에 의해 String 형태로 넘겨진 'content' 필드가 포함된 Greeting 객체가 생성되고 반환된다. 

 

기존 MVC controller와 RESTful web service controller의 차이점은 HTTP response 생성 방식에 있다. View를 통해 서버 쪽에 greeting data의 HTML에 의존하는 MVC와 다르게 RESTful 방식은 객체의 return을 통해 모두 해결된다. 그리고 반환된 객체는 HTTP response에서 자동으로 JSON으로 전달된다.

 

 

⊙ Build an executable JAR

JAVA cmd를 통해 JAR 파일을 생성하거나 자신이 사용하는 에디터에서 생성할 수 있다.

1. JAVA command: java -jar target/gs-rest-service-0.1.0.jar

2. Intellij JAR 파일 생성 

 

 

⊙ Test the service

JAR를 실행하고 http://localhost:8080/greeting를 접속하면 다음과 같이 나옴을 알 수 있다

한 번 더 접속하면 id의 값이 1 증가할 것이다. 또한 domain을 http://localhost:8080/greeting?name=chocochip 으로 접속하면 content의 내용이 바뀐 것을 확인할 수 있다.

 

⊙ 마무리

위와 같이 우리는 몇몇 어노테이션을 통해 쉽게 RESTful Web Service를 구축할 수 있다. 다양한 기능들이 많으니 더 써보도록 하자. RESTful Web Service 구축할 때, 많은 기능들을 사용할 수 있으니 잘 공부하자.

 

 

 

 

References) 

https://spring.io/guides/gs/rest-service/

https://spring.io/guides/gs/consuming-rest/

 

 

 

반응형

댓글