앞서 MVC에서 Controller는 Model과 View를 이어주고 사용자의 요청을 처리한다고 했다.
사용자의 요청은 보통 API로 전달되기 때문에 Controller에서 API를 작성하면 되는 것이다.
일단 기본적으로 대표적인 4가지 Get, Post, Put, Delete가 있다.
/users/1이면 ID가 1인 사용자 정보 요청기본적으로 본 클래스가 Controller를 알려야지 API 요청이 해당 클래스로 올 수 있기 때문에 @Controller어노테이션을 이용한다.
이후에 Class 내부에 메소드를 작성하는데, 앞서 말한 4가지의 요청 메소드 이외에도 요청 메소드마다 어노테이션을 통해 지정이 가능하다.
@GetMapping,PostMapping... 이러면 Get메소드 API는 @GetMapping이 지정된 메소드만 참고한다. 하지만 Get 메소드의 개수가 1개가 아닐 수 있기 때문에 URL을 이용해서 구분하는데, 그 URL을 어노테이션의 매개변수에 작성한다.
@GetMapping("/api/get") 이러면 get 요청의 url이 ~~/api/get인 경우 해당 메소드로 오는것.
근데 만약 @GetMapping("/api/get") , @PostMapping("/api/post")처럼 /api가 중복되는 경우가 있다. 이 경우 클래스의 어노테이션으로 @RequestMapping("/api")를 하면 /api를 생략할 수 있다. 즉, 다음과 같이 작성된다
@Controller
@RequestMapping("/api") // /api로 시작하는 요청은 본 클래스로 온다.
public class HelloController {
@GetMapping("/get")
@ResponseBody // 문자열 반환할꺼니까
public String hello() {
return "Get Method 요청";
}
@PostMapping("/Post")
@ResponseBody
public String post() {
return "Post Method 요청";
}
@PutMapping("/put")
@ResponseBody
public String put() {
return "Put Method 요청";
}
@DeleteMapping("/delete")
@ResponseBody
public String delete(){
return "Delete Method 요청";
}
}
URL가 혹시나 동일하더라도 Mapping 타입이 다르면 각 맞는 타입으로 실행된다.