Summary : GET API는 서버에서 값을 가져올 때 사용하고,
PathVariable과 ReqestParam을 이용해서 값을 넘겨줄 수 있다.
🔍 목차
5.2 GET API 만들기
5.2.1 @RequestMapping
5.2.2 매개변수가 없는 GET 메서드
5.2.3 @PathVariable을 이용하는 GET 메서드
5.2.4 @RequestParam을 이용하는 GET 메서드
5.2.5 DTO 객체를 이용하는 GET 메서드
📌 5.2 GET API 만들기
- GET API는 서버에서 값을 가져올 때 사용하는 API
- GET API를 작성하는 방법은 아래와 같다.
1. 매개변수 없이
2. @PathVariable
3. @RequestParam
📌 5.2.1 @RequestMapping
- @RequestMapping 어노테이션을 별다른 설정 없이 선언하면 HTTP의 모든 요청을 받는다.
- 따라서 GET 형식의 요청만 받기 위해서는 어노테이션에 별도 설정이 필요하다.
=> @RequestMapping(method = RequestMethod.GET) - 클래스 수준에서 @RequestMapping을 설정하면
클래스 내부에 선언한 메서드의 URL 리소스 앞에 @RequestMapping 의 값이 공통 값으로 추가된다. - 4.3 버전 이후로는 더 이상 @RequestMapping를 쓰지 않고,
더 명시적으로 HTTP method를 나타내주는 아래의 어노테이션을 사용한다.- @GetMapping
- @PostMapping
- @PutMapping
- @DeleteMapping
📌 5.2.2 매개변수가 없는 GET 메서드 구현
- 별도의 매개변수 없이 GET API를 구현하는 경우 아래와 같이 코드를 작성할 수 있다.
하지만 웹 통신의 기본 목적이 데이터를 주고받는 것이기 때문에 매개변수가 없는 GET 메서드는 거의 쓰이지 않는다.
@GetMapping(value = "/name") // 디폴트가 value이므로 value= 부분 생략 가능
public void getName() {
}
📌 5.2.3 @PathVariable을 활용한 GET 메서드 구현
- PathVarible은 URL에 값을 담아 전달하는 방법
- 값을 받아오기 위해서는 아래 원칙을 지켜야 한다.
1) URL에 중괄호 { }를 사용하여 받아올 변수의 위치와 이름을 표시
2) 컨트롤러 함수의 인자 부분에 @PathVariable을 명시하고, 변수 이름을 중괄호 내부와 통일
3) 이름을 통일하기 어렵다면, @PathVariable("중괄호 내부 이름") 으로 받아올 수도 있음
@GetMapping(value = "/variable1/{variable}")
public String getVariable1 (@PathVariable String variable) {
return variable;
}
@GetMapping(value="/variable2/{variable}")
public String getVariable2 (@PathVariable("variable") String var) {
return var;
}
📌 5.2.4 @RequestParam을 활용한 GET 메서드 구현
- RequestParam은 쿼리 스트링 형식으로 값을 전달하는 방법
- 쿼리 스트링 형식은 ?로 시작하고, 키와 값을 = 로 연결하고 복수의 키와 값은 &로 연결하는 형식
e.g ?id=9&name=yonso - 컨트롤러 메서드의 인자로 @RequestParam과 키와 일치하는 변수명을 사용하면 값을 받아올 수 있음
- 이름을 통일하기 어렵다면, @RequestParam("키이름") 으로 받아올 수도 있음
@GetMapping(value = "/request1")
public String getRequestParam1(@RequestParam String name) {
return "name: " + name;
}
@GetMapping(value = "/request2")
public String getRequestParam1(@RequestParam("name") String userName) {
return "user: " + userName;
}
💡cf. required와 defaultValue 옵션
- PathVariable과 RequestParam 모두 위와 같이 설정하고 형식에 맞게 입력하지 않으면 오류가 발생함
- 이를 막아주는 것이 Required와 Default 옵션
- cf. default가 아니라 defaultValue인 것 주의
@GetMapping(value = "/request1")
public String getRequestParam1(@RequestParam(required=false, defaultValue="yonso") String name) {
return "name: " + name;
}
📌 5.2.5 DTO 객체를 활용한 GET 메서드 구현
- DTO란, Data Transfer Object의 약자
- DTO는 Repository를 제외한 모든 레이어 간의 데이터 교환에 활용됨
- DTO에는 private 필드, Getter, Setter만 존재함
cf. DTO와 VO의 역할은 서로 엄밀하게 구분하지 않고 사용한다. - DTO의 필드는 쿼리 스트링의 키와 매핑됨
public String getRequestParam3 (MemberDto memberDto){
return memberDto.toString();
}
'Spring Boot > 스프링 부트 핵심 가이드' 카테고리의 다른 글
[SpringBoot] 5.6-7 Swagger와 Logback (0) | 2023.07.30 |
---|---|
[SpringBoot] 5.3-5 POST, PUT, DELETE API 만들기 (0) | 2023.07.30 |
[SpringBoot] 2.4-5 디자인 패턴, REST API (0) | 2023.07.30 |
[SpringBoot] 2.1-3 스프링 부트 동작 방식, 레이어드 아키텍처 (1) | 2023.07.23 |
[SpringBoot] 1.2 스프링 프레임워크 vs. 스프링 부트 (0) | 2023.07.23 |