Spring boot) REST API 사용 환경 만들기(@RestCotroller, @GetMapping)

지난 글 Spring Boot란?(feat.IntelliJ IDAE) + 프로젝트 생성에 이어서 진행합니다.


Annotation?

일단 Annotation에 대해 설명하자면, 자바 소스코드에 추가하여 사용할 수 있는 메타데이터(자신의 정보를 담고 있는데이터)의 일종이다. 자바에서 오버라이딩 할 때 @Overriding 으로 사용한 기억이 있을 것이다. 얘 역시 Annotation.


먼저 HelloWorldController 라는 클래스를 하나 만들어준다.

@RestController
public class HelloWorldController {
    // Get
    // hello-world (endpoint)
    @GetMapping(path = "/hello-world")
    public String helloWorld(){
        return "Hello World";
    }
}

@RestController

먼저 @controller@RestController의 차이는 @ResponseBody를 어떻게 사용하느냐에 달려있다. 기존 @Controller는 MVC에서 jsp나 html과 같은 뷰를 전달해주었기 때문에 데이터를 반환하기 위해서는 @ResponseBody를 사용해야했다. 하지만 프론트엔드와 백엔드를 분리하는 개발 방식이 주를 이루면서, Rest API를 통해 데이터만 전달하는@RestController를 사용하게 되었다. 즉 @Controller@ResponseBody가 합쳐진 것이 @RestController이며, JSON/XML 타입의 HTTP 응답을 직접 리턴하게 된다.


@GetMapping(Post,delete,update 다 마찬가지)

스프링 4.x부터 추가되었으며, 기존 @RequestMapping를 대체하여 다음과 같이 사용 가능하다. 어떤 메소드로 매핑할지 명확하고 짧기 떄문에 사용하기 편했다.

@GetMapping("/hello-world")
@GetMapping(path = "/hello-world") // 어떤 속성인지 지정 가능

// 기존 RequestMapping
@RequestMapping(method=requestMethod.GET, path="/hello-world")

이제 우리가 지정했던 http://localhost:8088/hello-world 에 접속해보자. localhost:8088까지는 Tomcat 서버를 지칭하고, 뒤의 hello-world는 우리가 지정한 API를 지칭한다. 정상적으로 출력 되는 것을 확인할 수 있다.

image-20201129115911570


PostMan으로도 테스트해봤다. 스테이터스 코드 200으로 정상, 그리고 Hello World가 정상으로 출력된다.

image-20201129121151498


Written by@Jeonghoon Song
BFS보단 DFS를 하는 개발자가 되자

GitHub