[TIL] 몇가지의 Spring annotation

Jongmin·2020년 1월 20일
0

TIL

목록 보기
1/1
  1. @PathVariable
    메소드의 인자(parameter)가 URI의 변수로 사용되는 것을 의미
    즉, URI 경로에 변수를 사용할 수 있도록 해주는 어노테이션이다.
@RequestMaaping(value = "/board/{boardIdx}", method = RequestMethod.GET)
 public String openBoardDetail(@PathVariable int boardIdx) throws Exception {
		// ... 
 }

/board/...(숫자) 패턴의 주소에 매칭하는 메소드이다.
이때, /board 뒤에 이어지는 값을 boardIdx에 바인드하여 사용하겠다는 것을 선언하는 것이 @PathVariable이다.
가장 일반적인 예시는 게시판 글의 상세화면 보기일 듯 하다.
위의 예시도 게시글 번호를 URI에서 받아서 이에 해당하는 게시글을 반환하는 식이다.

  1. @RequestParam
    요청받은 URI(URL?)의 쿼리문의 값을 읽어오고자 할 때 쓰는 어노테이션이다.
    예를 들어,

    ```

    naver.com/search?query=오늘의+날씨

    ###### (적당히 만들어낸 예시 주소일 뿐 실제 주소는 아니다.)
    위의 URI에서 쿼리문은 ?뒤로 이어지는 **query=오늘의+날씨**이다. 
    이때 해당 쿼리값을 가져오고자 한다면, 아래와 같이 가져올 수 있을 것이다. 
    ~~~
    @RequestMapping(value = "/search", method = RequestMethod.GET)
    public ModelAndView searchQuery(@RequestParam("query") String queryStr){
    	... 
    }
    ~~~
    이렇게 하면 URI의 쿼리문 중, "query"의 이름을 가지는 값을 queryStr 변수에 바인딩 시킬 수 있다. 
    
    
    
  2. @RequestBody
    항상 모든 요청이 URL 주소에 요청할 정보를 다 담아서 주는 것은 아니다.
    어떤 요청들은 HTTP 패킷 바디에 담겨서 넘어오기도 한다. POST 방식으로 서버에 값을 전달하는 경우가 그러하다.
    값이 다르게 전달되어 오므로, 받는 방법도 다르다.

    @RequestMapping(value = "/board/{boardIdx}", method = RequestMethod.PUT)
    public String updateBoard(@RequestBody BoardDto board) throws Exception {
    		// ...
    }

    예제 코드는 게시판에서 사용되는 코드이다.
    특정 게시글을 수정하고자 하여 제목, 내용 등을 수정한 후 서버에 수정을 요청하는 경우에 호출되는 코드이다.
    게시글 번호와 요청 방식이 PUT인 경우 호출되는데, 이때 수정하고자 하는 글의 내용이 미리 정의한 BoardDto 형식으로, HTTP 바디에 묶여 날라온다.
    이때 이 BoardDto를 board에 바인딩하고자 할 때 쓰는 어노테이션이 @RequestBody이다.
    이를 통해 GET 방식 이외의 POST, PUT 방식의 요청에 대응하여 전달되는 값들을 받을 수 있다.

profile
취업하고 싶다

0개의 댓글