-
Spring Boot - GET APIFramework & Library/Spring Boot 2022. 1. 31. 20:21
GET API
@RestController
- Spring Framework 4 버전부터 사용 가능한 애너테이션이다.
- "@Controller"와 "@ResponseBody"가 결합된 애너테이션이다.
- 컨트롤러 클래스 하위 메서드에 "@ResponseBody" 애너테이션을 붙이지 않아도 문자열, JSON 등을 전송할 수 있다.
- View를 거치지 않고 HTTP ResponseBody에 직접 리턴 값을 담아 보내게 된다.
@RequestMapping
@RequestMapping(value = "/hello", method = RequestMethod.GET) public String hello() { return "Hello World"; }
- 요청에 대해서 어떤 컨트롤러가 처리할지를 매핑하기 위한 애너테이션이다.
- value와 method로 정의하여 API를 개발하는 방식으로, 현재는 거의 사용하지 않는 방식이다.
- 컨트롤러와 매핑된 URL로 요청을 보내면 "Hello World"가 응답되는 것을 확인할 수 있다.
@GetMapping
@GetMapping(value = "/name") public String getName() { return "임빈영"; }
- 별도의 파리미터 없이 GET API를 호출하는 경우 사용되는 방법이다.
- 컨트롤러와 매핑된 URL로 요청을 보내면 "임빈영"이 응답되는 것을 확인할 수 있다.
@PathVariable
@GetMapping(value = "/variable01/{variable}") public String getVariable01(@PathVariable String variable) { return variable; }
- GET 형식의 요청에서 파라미터를 전달하기 위해 URL에 값을 담아 요청하는 방법이다.
- 위 코드와 같이 "@GetMapping"에서 사용된 {변수}의 이름과 메서드의 "@PathVariable" 매개변수와 일치시켜야 한다.
- 컨트롤러와 매핑된 URL로 요청을 보내면 "hello"가 응답되는 것을 확인할 수 있다.
@GetMapping(value = "/variable02/{variable}") public String getVariable02(@PathVariable("variable") String var) { return var; }
- 위 방식은 "@GetMapping"에서 사용된 {변수}의 이름과 메서드의 "@PathVariable" 매개변수가 다를 경우 사용하는 방식이다.
- 컨트롤러와 매핑된 URL로 요청을 보내면 "spring"이 응답되는 것을 확인할 수 있다.
@RequestParam
@GetMapping(value = "/request01") public String getRequestParam01(@RequestParam String name, @RequestParam String email) { return name + ", " + email; }
- GET 형식의 요청에서 쿼리 문자열을 전달하기 위해 사용되는 방법이다.
- '?'를 기준으로 우측에 {key}={value}의 형태로 전달되며, 복수 형태로 전달할 경우 '&'를 사용한다.
- 컨트롤러와 매핑된 URL로 요청을 보내면 "임빈영, qlsdud960604@gmail.com"이 응답되는 것을 확인할 수 있다.
@GetMapping(value = "/request02") public String getRequestParam02(@RequestParam Map<String, String> param) { StringBuilder sb = new StringBuilder(); param.entrySet().forEach((map) -> { sb.append(map.getKey() + " : " + map.getValue() + "\n"); }); return sb.toString(); }
- 위 코드는 어떤 요청 값이 들어올지 모르는 경우 사용하는 방식이다.
- 컨트롤러와 매핑된 URL로 요청을 보내면 map 자료구조 내의 데이터들이 정확하게 응답되는 것을 확인할 수 있다.
DTO 사용
@GetMapping(value = "/request03") public String getRequestParam03(MemberDTO memberDTO) { return memberDTO.toString(); }
- GET 형식의 요청에서 쿼리 문자열을 전달하기 위해 사용되는 방법이다.
- key와 value가 정해져 있지만, 받아야 할 파라미터가 많을 경우 DTO 객체를 사용한 방식이다.
- 컨트롤러와 매핑된 URL로 요청을 보내면 MemberDTO의 데이터들이 정확하게 응답되는 것을 확인할 수 있다.
GitHub - qlsdud0604/spring-boot-study
Contribute to qlsdud0604/spring-boot-study development by creating an account on GitHub.
github.com
728x90'Framework & Library > Spring Boot' 카테고리의 다른 글
Spring Boot - PUT API (0) 2022.02.01 Spring Boot - POST API (0) 2022.02.01 Spring Boot - 메이븐(Maven) vs 그래들(Gradle) (0) 2022.01.30 Spring Boot - 프로젝트 구조 알아보기 (0) 2022.01.29 Spring Boot - JPA의 영속성 컨텍스트 (0) 2021.12.02