@RequestMaaping(value = "/board/{boardIdx}", method = RequestMethod.GET)
public String openBoardDetail(@PathVariable int boardIdx) throws Exception {
// ...
}
/board/...(숫자) 패턴의 주소에 매칭하는 메소드이다.
이때, /board 뒤에 이어지는 값을 boardIdx에 바인드하여 사용하겠다는 것을 선언하는 것이 @PathVariable이다.
가장 일반적인 예시는 게시판 글의 상세화면 보기일 듯 하다.
위의 예시도 게시글 번호를 URI에서 받아서 이에 해당하는 게시글을 반환하는 식이다.
@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 변수에 바인딩 시킬 수 있다.
@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 방식의 요청에 대응하여 전달되는 값들을 받을 수 있다.