티스토리 뷰

스프링부트 프로젝트가 준비가 되었으니 이제 본격적인 테스트를 위해

간단한 컨트롤러를 하나 만들어 보도록 한다.

컨트롤러의 리턴타입이 문자열이라면

문자열에 맞는 뷰페이지가 있어야 하지만

RestController는 뷰페이지가 따로 필요없이 결과를 반환해준다.

그럼 프로젝트에 controller 패키지를 하나 만들고 컨트롤러 클래스를 하나 만들어야 한다.

컨트롤러 패키지와 컨틀로러 클래스 파일을 하나 만들었으면

생성한 클래스파일을 열어 컨트롤러를 작성해 보자.

제일 먼저 @RestController 라고 어노테이션을 추가하고

/test 라는 URL로 접근했을 때 이를 처리하는 메소드를 생성한다.

그리고 이 메소드와 /test 라는 요청이 매핑된다는 어노테이션도 추가한다.

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package com.joyhong.controller;
 
 
@RestController
public class TestController {
 
    @RequestMapping(value = "/test", method = RequestMethod.GET)
    public String test() {
        return "Welcome :)";
    }
}

위와 같이 작성하고 저장을 하면 자동으로 컨테이너에 반영되는데 이는 프로젝트 생성시 DevTools 의존성을 추가해 두었기 때문이다.

이제 웹브라우저에 http://localhost:8080/home/test 를 입력하면 /test 요청에 매핑된 메소드에서 반환해 주는 값이 문자열이 응답으로 나오게 된다.

 이번에는 /test2라는 주소로 사용자의 이름을 전달받아  이 값과 함께 응답을 해주는 메소드를 생성한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package com.joyhong.controller;
 
 
@RestController
public class TestController {
 
    @RequestMapping(value = "/test", method = RequestMethod.GET)
    public String test() {
        return "Welcome :)";
    }
    
    @RequestMapping(value = "/test2", method = RequestMethod.GET)
    public String test2(String user) {
        return "Welcome " + user;
    }
}
 
 

15~18 라인이 새로 추가한 코드이다.

요청방식이 GET 방식이기 때문에 요청 URL에 ?user="이름" 으로 요청하면 응답 메시지로 "Welcome 이름"이 응답된다.

그럼 추가한 내용을 저장하고 웹브라우저에

http://localhost:8080/home/test2?user=Joy 를 입력해보자.

결과는 아래와 같이 나오게 된다.

위의 예제 2개는 반환값으로 문자열을 사용했는데 객체나 자바 컬렉션을 사용하는 경우는 어떻게 될까?

반환값으로 객체나 컬렉션을 사용하면 결과가 JSON 형식으로 변환되어 응답을 하게 된다.

그럼 객체를 반환값으로 사용하는 경우에 대한 예제를 위해 프로젝트에 domain 패키지와 VO 클래스를 하나 만들어보자. 여기서는 책을 예시로 사용하여 Book 이라는 VO 클래스를 하나 만든다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 
public class Book {
    
    private long seq;
    private String title;
    private String creator;
    private String publisher;
    private int publishedYear;
    
    public long getSeq() {
        return seq;
    }
    public void setSeq(long seq) {
        this.seq = seq;
    }
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public String getCreator() {
        return creator;
    }
    public void setCreator(String creator) {
        this.creator = creator;
    }
    public String getPublisher() {
        return publisher;
    }
    public void setPublisher(String publisher) {
        this.publisher = publisher;
    }
    public int getPublishedYear() {
        return publishedYear;
    }
    public void setPublishedYear(int publishedYear) {
        this.publishedYear = publishedYear;
    }
    
}
 
 

VO 클래스를 생성할 때 getter와 setter를 자동으로 생성해주는 롬복 라이브러리를 사용하는 사람도 있지만

그냥 이클립스에서 제공하는 단축키로 만드는게 내 경우는 더 편하기 때문에 굳이 사용하지 않는다.

VO 클래스인 Book 클래스가 생성되었으면 사용자가 /book 이라고 요청할 경우 Book 클래스에 값을 입력하고 반환하는 메소드를 생성한다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package com.joyhong.controller;
 
 
 
@RestController
public class TestController {
 
    @RequestMapping(value = "/test3", method = RequestMethod.GET)
    public Book test3() {
        Book book = new Book();
        book.setSeq(1);
        book.setTitle("책 제목");
        book.setCreator("책 저자");
        book.setPublisher("출판사");
        book.setPublishedYear(2020);
        return book;
    }
}
 
 

이렇게 작성하고 저장 후 웹브라우저에 http://localhost:8080/home/test3 와 같이 입력하면

Book 클래스 객체 값이 JSON으로 변환되어 응답으로 보내주는 것을 확인할 수 있다.

 

최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함