KH/Spring

@PathVariable

오늘의 진 2023. 1. 16. 09:40

@PathVariable

가변인자 처리하기 위해 사용하는 키워드
게시물 번호로는 1~N번까지 다양하기 때문에 특정 번호에 대한 URL Mapping을 하면 매우
번거롭고 코드가 지저분하다.
그러므로 이와 같은 가변인자 처리를 통해 boardNo를 일관된 방식으로 처리한다.

제이슨 타입으로 프론트로 부터 전달된 정보를 PathVariable을 통해서 매칭한다.



@PathVariable("boardNo") Long boardNo
보드넘버가 들어오면 어이거 가변인자래 ? 들어온 숫자가 뭐니? 하면서 아라서 boardNo에 넣어줌

가변인자를 사용한 URL Mapping은 아래와 같이 {가변인자} 형태로 작성한다.

 

  @DeleteMapping("/{boardNo}")
    public void boardRemove (@PathVariable("boardNo") Long boardNo) {
        log.info("boardRemove()");

        service.remove(boardNo);
    }
    
    
    
        @GetMapping("/{boardNo}")
    public VueBoard boardRead (@PathVariable("boardNo") Long boardNo) {
        log.info("boardRead()");

        return service.read(boardNo);
    }

예를 들어 URL을 통해 변수를 전달한다고 하자. 

http://localhost:8080/board?boardNo={$boardNo} 

혹은 http://localhost:8080/board/{boardNo}

의 두가지 경우로 전달 가능하다. 

위의 경우는 흔히 사용하는 GET 매핑이다. 

아래의 경우는 RestApi 호출시 주로 많이 사용한다. URL 을 이용해 파라미터를 처리 할 수 있다는 뜻

 

아래의 경우에는 컨트롤러 부분에서는 아래와 같은 방식으로 받으면 된다. 

@GetMapping(path="/board/{boardNo}")
    public User userBean(@PathVariable Long boardNo){
       
       
    }

1. @GetMapping path의 {변수} 괄호안에  URI에 사용한 변수 명을 입력한다.

    GetMapping 뿐만 아니라 당연히 다른 Method도 가능하다.  ( PostMapping, DeleteMapping, PutMapping......)

2. @PathVariable 어노테이션을 이용해서 {템플릿 변수} 와 동일한 이름을 갖는 파라미터를 추가하면 된다.

(PathVariable("boardNo") ) 이런식으로  변수 명을 적어 주어 매칭시켜도 된다.