본문 바로가기
개발 관련 지식/JAVA

Spring boot - 2. REST API GET 구현하기

by 권태일1147 2020. 3. 19.

이전 포스트 - 2020/03/19 - [개발 관련 지식/JAVA] - Spring boot - 1. 프로젝트 만들기 - IntelliJ

 

Spring boot 프로젝트에 Controller 패키지를 만들자

 

생성한 controller 패키지 안에 controller 자바 파일을 만들자.

GetController라는 이름으로 만들었다.

 

그리고 GetController.java 안에 다음 코드를 넣자.

package com.example.test.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController // 컨트롤러라고 알려주는 어노테이션
@RequestMapping("/api") // 여기로 들어올 때 사용할 path를 지정하는 어노테이션. 여기 있는 api들을 사용하기 위해 localhost:8080/api로 들어와야 한다.
public class GetController {
    @RequestMapping(method = RequestMethod.GET, path = "/getRequestApi") // localhost:8080/api/getRequestApi 로 들어오면 해당 getMethod api를 사용할 수 있다.
    public String getRequestApi(){
        return "getRequestApi";
    }
}

코드를 저장하고 프로젝트를 실행(재실행) 시킨 다음,

브라우저를 통해 localhost:8080/api/getRequestApi로 접속하자.

다음과 같이 나오면 성공한 것이다.

 

이제 파라미터를 받아 처리 하는 것을 해보자.

GET method는 웹에서 파라미터가 계속 붙어다닌다.

예를 들어, localhost:8080/api/getRequestApi?id=12&name=taeil 

GET method는 이런식으로 요청해야 한다.

새로운 api를 추가해보자.

@RequestMapping(method = RequestMethod.GET, path = "/anotherGetApi")
public String anotherGetApi(@RequestParam String id, @RequestParam String name)
    return "id="+id+", 이름은 "+name;
}

 

GetController.java 파일에 추가해주고 웹브라우저를 통해 들어가보자.

 

파라미터를 넣지 않으면 에러페이지가 뜬다.

 

이번엔 파라미터를 넣어서 들어가면,

잘 적용되어 나오는 것을 볼 수 있다.

 

메소드의 인자값을 바꿔서 사용할 수도 있다.

RequestParam에 name을 설정해서 받은 파라미터의 변수를 다르게 지정할 수 있다.

@RequestMapping(method = RequestMethod.GET, path = "/anotherGetApi")
public String anotherGetApi(@RequestParam(name = "userId") String id,
                            @RequestParam(name = "userName") String name){
    return "id="+id+", 이름은 "+name;
}

 

 

Model 객체를 적용해서 받아보자.

넘어오는 파라미터가 많다면 매번 RequestParam을 선언하면서 만들기 힘드니까

Model 객체를 만들어서 한번에 받아오자.

 

먼저 com.example.test 밑에 model 패키지를 만들자.

model 패키지 안에 자바 파일을 만들자.

나는 InfoVO라는 자바 파일을 만들었다. 그 안에 다음 코드를 넣자

package com.example.test.model;

public class InfoVO {
    private String id;
    private String name;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

macOS라면 변수를 선언하고 control + n을 누르면 getter/setter가 나올 것이다. 모두 선택하고 OK를 누르면 자동으로 생성된다.

 

그 다음 controller로 넘어가서 새로운 api 추가해서 테스트 해보자.

import com.example.test.model.InfoVO; // 메소드에서 InfoVO를 불러온다면 자동으로 추가될 것이다.

// ... 아래 코드 추가
@RequestMapping(method = RequestMethod.GET, path = "/usedModelGetApi")
public InfoVO usedModelGetApi(InfoVO infoVO){
    return infoVO; // json으로 결과 출력
}
    
@RequestMapping(method = RequestMethod.GET, path = "/usedModelStringGetApi")
public String usedModelStringGetApi(InfoVO infoVO){
    return "id= "+infoVO.getId()+", name="+infoVO.getName(); // String으로 결과 출력
}
// ...

코드를 추가하고 프로젝트를 재실행하자.

 

json 으로 출력
String으로 출력

 

api는 대부분 요청에 대한 응답으로 json형태를 받는다.

 

model을 이용했을 때 파라미터를 주지 않으면 null 값으로 나온다.

'개발 관련 지식 > JAVA' 카테고리의 다른 글

annotation processor 란  (0) 2020.03.21
lombok  (0) 2020.03.20
Spring boot - 3. Rest API POST 구현하기  (0) 2020.03.20
Spring boot - 1. 프로젝트 만들기 - IntelliJ  (0) 2020.03.19
자바 설치(JDK)  (0) 2020.03.19