Spring 5. Controller

김창민·2024년 8월 9일

BE

목록 보기
25/50

Controller

앞서 MVC에서 Controller는 Model과 View를 이어주고 사용자의 요청을 처리한다고 했다.
사용자의 요청은 보통 API로 전달되기 때문에 Controller에서 API를 작성하면 되는 것이다.

요청 Method 종류

일단 기본적으로 대표적인 4가지 Get, Post, Put, Delete가 있다.

GET

  • 조회
    - 어떤 리소스를 요청할 때 사용한다.
    • 데이터가 변경되지 않는다.
    • URL에 쿼리 파라미터 포함이 가능하다.
      • /users/1이면 ID가 1인 사용자 정보 요청
    • 캐싱될 수 있다.

POST

  • 생성 및 전송
    - body에 데이터를 담아 서버로 보낸다.
    • 서버의 상태 변경이 가능하다.
    • 보통 DB에 새로운 리소스를 추가할 대 사용
    • 동일한 요청을 여러 번 보내면 리소스가 여러 번 생성될 수 있다.

PUT

  • 업데이트
    - 특정 리소스를 덮어쓰거나 부분 수정시 사용한다.

DELETE

  • 삭제

구현

기본적으로 본 클래스가 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 타입이 다르면 각 맞는 타입으로 실행된다.

profile
일일 회고 : https://rlackdals981010.github.io/

0개의 댓글