memostack
article thumbnail
블로그를 이전하였습니다. 2023년 11월부터 https://bluemiv.github.io/에서 블로그를 운영하려고 합니다. 앞으로 해당 블로그의 댓글은 읽지 못할 수 도 있으니 양해바랍니다.
반응형

예제를 위해 간단한 Spring Boot 프로젝트를 생성한다.

2020/02/18 - [Spring/Spring Boot] - Spring Boot 프로젝트 생성하기

 

Spring Boot 프로젝트 생성하기

스프링 부트 프로젝트 생성 스프링 부트 프로젝트를 생성 할 수 있게 도와주는 사이트가 있다. (https://start.spring.io) 위와 같이 원하는 Version , Metadata , Dependency 를 정하여 프로젝트를 구성한다. Ge..

memostack.tistory.com

1. Controller 생성

Controller를 하나 생성한다. 생성할때는 @RestController를 이용한다.

<java />
@RestController // REST API Controller 사용한다는 것을 프레임워크에 알려줌 @RequestMapping("api") // localhost:8080/api 형태로 매핑 됨 public class GetController { }

@RestController를 붙여줘야, Spring Framework는 이 클래스가 Controller라는 것을 알 수 있다.

클래스 위에 @RequestMapping("api")를 입력하면, http://[ip]:[port]/api 와 같이 url이 매핑된다.

 

2. @RequestMapping

간단하게 화면에 문자열을 출력하는 API를 만들면, 아래와 같이 만들 수 있다.

<java />
@RestController @RequestMapping("api") public class GetController { // GET Method 로 통신 // 경로는 api/getMethod 와 매핑됨 @RequestMapping(method = RequestMethod.GET, path = "/getMethod") public String getRequest() { return "Hello Spring"; } }

@RequestMapping 안에 method 값으로 RequestMethod.GET을 넣어주면, HTTP GET 요청이 왔을때 동작을 한다.

그리고, path 값을 URL에 매핑한다. (위에서는 /api/getMethod와 매핑됨)

 

브라우저를 통해 확인해보면, (http://localhost:8080/api/getMethod)

아래와 같이 화면에 Hello Spring 이 나타난다.

@RequestMapping

 

3. @GetMapping

GET 요청 방식의 API를 만들때, @RequestMapping(method = RequestMethod.GET ...) 방식도 있지만, @GetMapping을 이용하는 방법도 있다. (개인적으로 @GetMapping을 더 많이 사용한다)

<java />
@RestController @RequestMapping("api") public class GetController { ... // GET Method 통신 // 경로는 api/getParam과 매핑됨 @GetMapping("/getParam") public String getParameter() { return "Hello Spring"; } }

단순히 @GetMapping 을 사용하면 @RequestMapping(method = RequestMethod.GET ...) 과 동일한 효과를 볼 수 있다.

 

 

@RequestParam

Parameter를 입력받는 API를 만드는 경우도 있는데, 그때는 @RequestParam을 사용한다.

<java />
@RestController @RequestMapping("api") public class GetController { ... @GetMapping("/getParam") public String getParameter(@RequestParam String id, @RequestParam(name = "password") String pwd) { return "ID: " + id + ", Password: " + pwd; } }

위 코드와 같이 입력 받을 파라미터를 메소드의 인자값으로 넣어준다. 그리고, 그앞에 @RequestParam을 넣는다.

 

기본적으로 인자 변수명을 파라미터명으로 받는다.

하지만, @RequestParam(name="원하는 파라미터 명")을 이용하면, 파라미터명을 바꿀 수 있다.

  • @RequestParam String id: /api/getParam?id=블라블라
  • @RequestParam(name = "password") String pwd: /api/getParam?password=블라블라

 

@RquestParam

 

만약 파라미터가 많아진다면 VO 객체를 생성하여 받을 수도 있다.

 

우선 VO 객체를 생성한다.

 

SearchParamVO.java

<java />
public class SearchParamVO { private String username; private String email; private int page; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public int getPage() { return page; } public void setPage(int page) { this.page = page; } @Override public String toString() { return "SearchParamVO{" + "username='" + username + '\'' + ", email='" + email + '\'' + ", page=" + page + '}'; } }

 

생성한 VO 객체를 아래와 같이 인자값으로 넣어준다.

 

GetController.java

<java />
@RestController @RequestMapping("api") public class GetController { @GetMapping("/getMultiParam") public String getMultiParameter(SearchParamVO vo) { // Parameter가 여러개인 경우, VO 객체로 받을 수 도 있음. return vo.toString(); } }

VO 객체를 이용한 파라미터 처리

 

위에서는 계속 문자열을 반환했지만, 요즘 API는 대부분 JSON 형식을 사용한다.

아래는 JSON 형태로 반환하도록 수정한 코드이다.

 

<java />
@RestController @RequestMapping("api") public class GetController { ... // return 값을 vo 객체로 해주면, Jackson 라이브러리가 알아서 JSON 형태로 변환하여 응답해준다. @GetMapping("/returnJson") public SearchParamVO returnJson(SearchParamVO vo) { return vo; // {"username":"tester","email":"tester@google.com","page":1} } }

 

@RestController를 이용하면, 내부적으로 Jackson 라이브러리에 의해 VO 객체를 JSON 형태로 변환하여 응답해준다.

만약 @RestController가 아닌 @Controller를 사용한다면, @ResponseBody를 추가해줘야 한다.

 

JSON 형태로 반환

 

4. 관련 글

2020/11/11 - [Spring/Spring Boot] - SpringBoot와 @PostMapping, @RequestBody 예제

 

SpringBoot와 @PostMapping, @RequestBody

@PostMapping POST 통신을 할때는 @RequestMapping(method=RequestMethod.POST, ...) 를 이용하거나 @PostMapping을 이용한다. @RestController @RequestMapping("api") public class PostController { @RequestMa..

memostack.tistory.com

 

반응형
블로그를 이전하였습니다. 2023년 11월부터 https://bluemiv.github.io/에서 블로그를 운영하려고 합니다. 앞으로 해당 블로그의 댓글은 읽지 못할 수 도 있으니 양해바랍니다.
profile

memostack

@bluemiv_mm

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!