빵구의 개발 메꾸기

스프링 부트(Spring Boot)를 활용한 GET REST API 구현 본문

BACK-END/SPRING BOOT

스프링 부트(Spring Boot)를 활용한 GET REST API 구현

bkjo94 2022. 5. 8. 17:14

스프링 부트(Spring Boot)를 활용하여 HTTP Method중 하나인 GET REST API를 구현하는 방법에 대해 알아보자.

GET REST API를 구현하는 방법은 여러가지가 있는데 한가지씩 과정을 보여주고자 한다.

@RestController는 해당 class가 RestAPI를 처리하는 Controller로 등록하겠다는 의미에서 사용된다.

 

 

 

<첫번째 구현 방법>

① 첫번째 구현 방법을 살펴보자.

    @GetMapping에 path라는 속성으로 요청이 들어올 세부 URL에 대한 path를 지정해준다.

② GET으로 설정한 뒤 요청을 보낼 URL인 localhost:8080/api/test/get-method1을 셋팅한다.

③ Send 버튼을 클릭하여 GET REST API를 호출한다.

④ return 받은 값을 보면 정상적으로 get1이 Body에 담긴 것을 확인할 수 있다.

 

 

 

<두번째 구현 방법>

① 두번째 구현 방법을 살펴보자.

    @RequestMapping에 첫번째 방법과 동일하게 path라는 속성으로 요청이 들어올 세부 URL에 대한 path를

    지정해주고 method 속성으로 GET 방식이기 때문에 RequestMethod.GET을 설정해준다.

② GET으로 설정한 뒤 요청을 보낼 URL인 localhost:8080/api/test/get-method2을 셋팅한다.

③ Send 버튼을 클릭하여 GET REST API를 호출한다.

④ return 받은 값을 보면 정상적으로 get2이 Body에 담긴 것을 확인할 수 있다.

 

 

 

<세번째 구현 방법>

① 세번째 구현 방법을 살펴보자.

    @GetMapping에 path 속성은 생략하고 세부 URL에 대한 path를 지정해준다.

    이 때 요청을 보내는쪽에서 /path-variable 뒤에 보낸 데이터를 대해 받기 위해서는 {}안에 변수명을 지정해주고

    이 변수명은 ②의 @PathVariable의 name 속성에 값과 일치해야 한다.

② {}안에 변수명에 대해 @PathVariable의 name 속성에 값과 일치해야 하며 변수명으로 들어온 값은 

    String userName에 담기게 된다.

③ GET으로 설정한 뒤 요청을 보낼 URL인 localhost:8080/api/test/path-variable/bkjo를 셋팅한다.

④ Send 버튼을 클릭하여 GET REST API를 호출한다.

⑤ return 받은 값을 보면 정상적으로 bkjo가 Body에 담긴 것을 확인할 수 있다.

 

 

 

<잘못된 예시>

① 앞서 설명한 세번째 방법과 동일하게 작성한다.

② 메서드 파라미터 정보에 @PathVariable을 넣지 않고 String userName만 넣었을 경우 어떻게 되는지 살펴보자.

③ GET으로 설정한 뒤 요청을 보낼 URL인 localhost:8080/api/test/path-variable/bkjo를 셋팅한다.

 Send 버튼을 클릭하여 GET REST API를 호출한다.

⑤ @GetMapping에 작성한 {userName} 부분의 데이터를 받기 위해서는 메서드 파라미터 정보에 @PathVariable을

   넣고 name 속성값에 변수명을 일치시켜줘야 정상적으로 데이터를 받을 수 있는 것을 볼 수 있다.

 

 

 

<잘못된 예시>

① 앞서 설명한 세번째 방법과 동일하게 작성한다.

② 메서드 파라미터 정보에 @PathVariable을 넣었으나 name 속성값에 변수명과 일치하지 않게 String userName만

    넣었을 경우 어떻게 되는지 살펴보자.

③ GET으로 설정한 뒤 요청을 보낼 URL인 localhost:8080/api/test/path-variable/bkjo를 셋팅한다.

 Send 버튼을 클릭하여 GET REST API를 호출한다.

⑤ 서버 에러가 나는 것을 볼 수 있다.

 

 

 

<다중 파라미터를 개별적으로 받을 경우>

① 앞서 설명한 세번째 방법과 동일하게 작성하되 뒤에 {변수명}은 작성하지 않는다.

    위에 내용에서는 요청을 보내는쪽에서 /query-parameter 뒤에 보낸 데이터를 대해 받기 위해서는 {변수명}을

    작성해서 받았으나 이번엔 여러 개의 데이터를 받을 것이기에 메서드의 파라미터 정보에 @RequestParam을

    활용하여 데이터를 받아보자.  

② 메서드 파라미터 정보에 각각 받을 데이터 별로 @RequestParam를 넣고 타입 뒤에 있는 변수명에는 API 요청 시

    쿼리 파라미터에 작성한 key=value에서의 key와 일치해야 한다.

③ GET으로 설정한 뒤 요청을 보낼 URL인 localhost:8080/api/test/query-parameter?

    name=bkjo&age=29&address=daejeon을 셋팅한다.

 Send 버튼을 클릭하여 GET REST API를 호출한다.

⑤ return 받은 값을 보면 정상적으로 name, age, address 값이 Body에 담긴 것을 확인할 수 있다.

 

 

 

<다중 파라미터를 Map으로 받을 경우>

① 이번에도 여러 개의 데이터를 받을 것이기에 path 정보만 넣고 받을 데이터에 대해서는 뒤에 /query-parameter-map 

    뒤에 {변수명}은 작성하지 않고 메서드의 파라미터 정보에 @RequestParam을 활용하여 데이터를 받을 것이다.

② 아까는 메서드 파라미터 정보에 각각 받을 데이터 별로 @RequestParam를 넣었지만 이번엔 받을 데이터에 대해

    @RequestParam을 하나만 넣는 대신 타입을 Map으로 하게 되면 데이터 별로 @RequestParam을 넣는 것과

    동일하게 받을 수 있다.

③ GET으로 설정한 뒤 요청을 보낼 URL인 localhost:8080/api/test/query-parameter-map?

    name=bkjo&age=29&address=daejeon을 셋팅한다.

 Send 버튼을 클릭하여 GET REST API를 호출한다.

⑤ return 받은 값을 보면 정상적으로 name, age, address 값이 Body에 담긴 것을 확인할 수 있다.

 

 

 

<잘못된 예시>

① 이번에도 여러 개의 데이터를 받을 것이기에 path 정보만 넣고 받을 데이터에 대해서는 뒤에 /query-parameter-map

    뒤에 {변수명}은 작성하지 않고 메서드의 파라미터 정보에 @RequestParam을 활용하여 데이터를 받을 것이다.

② 메서드 파라미터 정보에 @RequestParam을 넣지 않고 Map만 넣었을 경우 어떻게 되는지 살펴보자.

③ GET으로 설정한 뒤 요청을 보낼 URL인 localhost:8080/api/test/query-parameter-map?

    name=bkjo&age=29&address=daejeon을 셋팅한다.

 Send 버튼을 클릭하여 GET REST API를 호출한다.

⑤ 메서드 파라미터 정보에 @RequestParam이 없기 때문에 매핑이 안돼서 정상적으로 데이터가 return 되지 않은 것을 

    볼 수 있다.

 

 

 

<다중 파라미터를 VO로 받을 경우>

① API 호출 시 URL에 보낼 데이터의 key 값들에 대해 일치하는 모델 class의 property들을 정의하고 getter setter

    메서드를 만든다.

② 마찬가지로 여러개의 데이터를 받을 것이기 때문에 ${변수명}은 생략한다.

③ 메서드의 파라미터 정보에 받을 데이터에 대한 key 값들과 매핑되는 property가 정의 된 모델 class를 넣는다.

    모델 class를 넣을 때는 @RequestParam을 넣지 않아도 된다. 

④ GET으로 설정한 뒤 요청을 보낼 URL인 localhost:8080/api/test/query-parameter-model?

    name=bkjo&age=29&address=daejeon을 셋팅한다.

⑤ Send 버튼을 클릭하여 GET REST API를 호출한다.

⑥ return 받은 값을 보면 정상적으로 name, address, age 값이 Body에 담긴 것을 확인할 수 있다.

Comments