스프링 부트 Rest 서비스 사용해보기

Posted by 이정근 on November 18, 2018

원문은 https://dzone.com/articles/spring-rest-service 이다. 원문에서는 Maven을 사용하였지만 번역에서는 gradle을 사용하였다.

  1. gradle 파일을 생성하기 위하여 initializer 를 사용한다.
  2. WEB 종속성 추가한다.
  3. Generate Project 버튼을 클릭한다.

이미지01

Zip 파일이 생성되는데 다운받아서 압출을 풀고 IntelliJ로 import 한다.

폴더 구조는 아래와 같다.

이미지02

gradle 파일을 열어보면 종속성을 확인할 수 있다.

자동으로 생성된 구조에서 하나 바꾼게 있는데 스프링 부트 어플리케이션의 부트스트랩의 위치를 com.example.service에서 com.example 로 바꾸었다.

그리고 아래과 같은 추가 작업이 필요하다.

  1. 새로운 패키지로 com.example.controller를 생성한다. Rest 컨트롤러가 포함될 곳이다.
  2. 그리고 com.example.model 패키지를 만들고 그안에 응답을 위한 모델 클래스를 만든다.

우선, com.example.model 패키지 안에 모델 클래스를 만든다.

MessageModel.java

package com.example.model;

public class MessageModel {
    /**
     * Default constructor.
     */
    public MessageModel(){

    }

    /**
     * object contructor.
     * @param infoMessage
     * @param infoCode
     */
    public MessageModel (String infoMessage, int infoCode){
        this.infoMessage = infoMessage;
        this.infoCode = infoCode;
    }

    private String infoMessage;
    private int infoCode;

    public String getInfoMessage() {
        return infoMessage;
    }

    public void setInfoMessage(String infoMessage) {
        this.infoMessage = infoMessage;
    }

    public int getInfoCode() {
        return infoCode;
    }

    public void setInfoCode(int infoCode) {
        this.infoCode = infoCode;
    }
}

그리고 com.example.controller 패키지안에 컨트롤러를 만든다.

FoundationController.java

@RestController
public class FoundationController {

    @ResponseBody
    @GetMapping(path= "/hello")
    MessageModel sayHello(){
        return new MessageModel("Welcome mate!", 101);
    }
}

브라우저나 다른 도구로 URL을 입력하면 예를 들어 /hello 같은 요청에 HTTP Get 핸들러로 메소드를 처리하는 간단한 GetMapping 을 만들었다.

ResponseBody 어노테이션은 반환값이 요청에 대한 응답본문에 바인된다는 것을 나타낸다.

RestController 은 Rest 엔트포인트를 노출하는 컨테이너로서 클래스를 나타내는데 사용된다.

소스코드를 실행할 준비가 되었다. 실행버튼을 누를 시간이다.

어플리케이션을 실행하면 콘솔창으로 아래와 같이 코딩하여 선언한 값들이 매핑되는 것을 볼 수 있다.

s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped “{[/hello],methods=[GET]}” onto com.samarthya.model.MessageModel com.samarthya.controller.FoundationController.sayHello()

여러분이 코딩한 메소드들이 매핑되고 있다는 것을 나타내는 것인데 혹시 콘솔창에 보이지 않아도 당황하지 말자. 브라우저로 정상적으로 되는 것을 확인하면 된다.

이제 브라우저를 실행하고 HTTP Get 요청을 보내보자.

http://localhost:8080/hello 을 입력하고 접속을 하면 아래와 같은 응답을 확인 할 수 있다.

이미지03