STS 로 Spring Boot 프로젝트 만들기. 2) RestController 활용해 API 컨트롤러 만들기

작성: 2021.07.09

수정: 2021.07.09

읽는시간: 00 분

Programming/JPA ⁄ Spring

반응형

STS 로 Spring Boot 프로젝트 만들기. 2) RestController 활용해 API 컨트롤러 만들기

참고서적 : [길벗] 스프링부트 프로그래밍 입문 - 쇼다 츠야노

https://shanepark.tistory.com/157

 

STS 로 Spring Boot 프로젝트 만들기. 1) STS설치 및 프로젝트 생성

STS 로 Spring Boot 프로젝트 만들기. 1) STS설치 및 프로젝트 생성 참고서적 : [길벗] 스프링부트 프로그래밍 입문 - 쇼다 츠야노 아래 페이지에서 본인에게 맞는 STS 를 다운 받습니다. 저는 Eclipse용

shanepark.tistory.com

위의 글에 이어지는 내용 입니다.


 

base Package 에 하나의 Application.java 파일이 생성 되어 있는데요, 확인 해 보도록 하겠습니다.

단순하게 main 메서드 하나만 가지고 있는 일반적인 어플리케이션 클래스 입니다. @SpringBootApplication 이라는 어노테이션이 눈에 띄는데요,

들어가서 확인해보니, 이러한 어노테이션들을 가지고 있습니다. ComponentScan도 해주네요.

해당 어노테이션을 통해 해당 클래스가 스프링 부트로 동작하게 끔 해줍니다. 그래서 .run 명령어를 통해 단순하게 run 메서드만을 실행 해 줍니다.

 

자 이제 MVC 패턴에 맞추어 Controller 먼저 만들어 보도록 하겠습니다.

base package에 일반적인 클래스를 하나 만듭니다. 이름은 알아보기 쉽게 Controller로 했습니다.

그러고는 정말 간단한 코드를 작성 했습니다. 

@RestController와 @RequestMapping 어노테이션을 활용합니다.

RestController를 열어보니 @Controller와 @ResponseBody 두개를 달았을 때와 같은 일을 합니다.

 

이제 아까와 마찬가지로 다시 서버를 작동 시켜 줍니다.

 

이제 아까 에러가 떴던 페이지에 접속 해보면

Hello world를 출력 해 주는 것을 확인 할 수 있습니다.

이번엔 json 데이터를 반환하게끔 해 보려고 하는데

 

Deprecation이 되어 있습니다.

 

확인을 해보니 5.2 버전 부터 Chrome 같은 메이저 브라우저들이 해당 parameter 없이도 올바르게 잘 interpret 하기 때문에 필요 없다고 합니다.

그렇다면 인코딩을 설정 해 주지 않고 해보도록 하겠습니다.

 

POSTMAN을 활용해서 요청을 보냈고, Hello world! 라는 JSON 데이터를 받은 것을 확인 할 수 있습니다.

 

쩝.. 그런데 Chrome에 혹시나 해서 쳐보니 알아서 json 응답을 받으니 json 형태로 데이터를 받아오고 있었네요. 굳이 postman을 설치하지 않으셔도 Chrome을 통해서도 API 테스트를 하실 수 있습니다.

 

이번에는 2개의 파라미터를 받아 더하기 연산을 하는 컨트롤러를 생성 해 보도록 하겠습니다.

pathVariable도 함께 활용 해 보도록 하겠습니다.

다소 억지스러워 보일수 있는 url 이지만, pathVariable 을 활용 해 보려다 보니 이렇게 되었습니다.

사실 Parameter로 받는게 더 깔끔하긴 하겠습니다.

 

이렇게 코드를 작성하고 다시 서버를 켜보겠습니다.

/add/123/456 으로 요청을 보내니

123과 456을 합친 579를 반환 해 주었습니다.

특별한 건 아니지만, RESTAPI를 작성 할 준비가 충분히 된 느낌이 듭니다.

이번에는 따로 produces를 설정 해 주지 않았지만, 반환타입 int 가 알아서 String으로 형 변환 되어서 반환되는지 아니면 @RestController라는 어노테이션이 알아서 해 주는 일인지, 응답이 json으로 잘 왔습니다. 

 

테스트를 위해 ToString 메서드가 아닌 Arrays.ToString()을 활용 해야만 하는, 배열! 객체를 반환 해 보도록 하겠습니다. 그러면 ToString 을 거쳤는지 아니면 객체가 그대로 반환 되었는지 알 수 있을 것 같습니다.

 

코드는 이렇게 작성 했습니다.

확인 해 보니 요청시 배열 객체를 정상적으로 반환하는 것을 확인 할 수 있습니다.

System.out.println(answer) 로 배열 객체를 출력 한 것은 예상대로, 배열을 출력하는게 아니고 해당 주소를 출력합니다.

이것으로 ToString이 아닌 객체 자체를 @RestController라는 어노테이션을 통해 반환하는 것을 알 수 있습니다.. 최종 프로젝트때 하나 하나 다 produces=MediaType.APPLICATION_JSON_UTF8_VALUE 달았었는데.. 또르르..

 

이상입니다.

https://github.com/Shane-Park/springBootStudy

 

Shane-Park/springBootStudy

this repository was made for 2 days sprint of Spring boot for naver coding test - Shane-Park/springBootStudy

github.com

해당 포스팅의 모든 코드는 위 URL에서 확인 하실 수 있습니다.

 

 

반응형