GET 메소드
의미 : 리소스 취득
CRUD : R
멱등성 : O
안정성 : O
Path Variable : O
Query Parameter : O
Data Body : X
패키지 생성과 클래스 생성
controller 패키지 생성
controller 패키지 내에 ApiController 클래스 작성
@RestController
@RequestMapping("/api")
public class ApiController { }
메소드 작성
@GetMapping(path="/주소")
@GetMapping(path = "/api")
public String hello() { return "hello"; }
@RequestMapping("/주소")
이 같은 방식을 사용하면 GET/POST/PUT/DELETE 모든 메소드가 맵핑 됨
@RequestMapping("/hello")
public String hi() { return "hi"; }
@RequestMapping(path = "/hi", method = RequestMethod.GET)
public String hi() { return "hi"; }
Path Variable로 받으면 됨
@GetMapping("/주소/{변수이름}")
매개변수에 @PathVariable 작성
변수이름과 변수명은 동일해야 함
@GetMapping("/path-variable/{name}")
public String pathVariable(@PathVariable(name = "name") String pathName, String name) {
System.out.println("PathVariable : " + pathName);
return pathName;
}
매개변수로 Map 받기
@GetMapping(path = "/주소")
매개변수에 @RequestParam 작성
key와 value 형태이므로 매개변수 Map
@GetMapping(path = "/query-param")
public String queryParam(@RequestParam Map<String, String> queryParam) {
StringBuilder sb = new StringBuilder();
queryParam.entrySet().forEach( entry -> {
System.out.println(entry.getKey());
System.out.println(entry.getValue());
System.out.println("\n");
sb.append(entry.getKey() + " = " + entry.getValue() + "\n");
});
return sb.toString();
}
각 매개변수에 @RequestParam 지정
@GetMapping("/주소")
매개변수에 @RequestParam 작성
매개변수가 많아지면 Annotation을 일일이 붙이는 데에 부담
@GetMapping("/query-param02")
public String queryParam02(
@RequestParam String name,
@RequestParam String email,
@RequestParam int age
) {
System.out.println(name);
System.out.println(email);
System.out.println(age);
return name + " " + email + " " + age;
}
dto 패키지 및 클래스 작성 및 사용
dto 내 작성한 클래스를 매개변수로 받기
@GetMapping("/주소")
매개변수에 dto클래스 변수명
현업에서 가장 많이 사용하는 방식
@GetMapping("/query-param03")
public String queryParam03(UserRequest userRequest) {
System.out.println(userRequest.getName());
System.out.println(userRequest.getEmail());
System.out.println(userRequest.getAge());
return userRequest.toString();
}
@RestController | Rest API 설정 |
@RequestMapping | 리소스를 설정(method로 구분 가능) |
@GetMapping | Get Resource 설정 |
@ReqeustParam | URL Query Param Parsing |
@PathVariable | URL Path Variable Parsing |
Object | Query Param Object로 Parsing |
참고
멱등성이란 여러 번 요청을 해도 같은 응답이 오는 것
DTO(= Data Transfer Object)란 데이터를 오브젝트로 변환하는 객체, 로직을 가지지 않는 데이터 객체
URL에서, "?" 이후가 Query Parameter
"&" 기준으로 잘라보면 "key=value" 형태