Spring/Spring Boot

[@RequestParam Vs @PathVariable] - Spring URL 파라미터 값 받아오기

민돌v 2021. 11. 23. 17:37

스프링 컨트롤러에서는 URL 파라미터값을 받아오는 2가지 방법이 있다.

 

이건 URL 파라미터를 어떤 방식으로 넘겨주는냐에 따라 혼합적으로 사용해주면 될 것 같다.

 

URL에 파리미터값을 전달하는 2가지 경우

Case 1 ) http://xxx.x.x?index=1&page=2

Case 2 ) http://xxxx.x.x/index/1

 

첫번째 URL의 경우 파라미터 값과 이름을 같이 전달하는 방식으로 @RequestParam을 사용한다.

두번째 방식 URL에 변수값을 포함해서 넘겨주는 방식으로 Rest API에서 값을 호출하는 경우 주로 많이 사용되며 @PathVariable 을 사용한다.

 

 

| @RequestParam이란? 

@GetMapping("getDriver")
public String viewName( @RequestParam("name") String name, @RequestParam("name2") String name2){

	//위처럼 하나 이상의 타입을 적용할 수 있습니다.
  	//스플잉에서 지원하는 변환기에서 지원되는 모든타입을 변환가능합니다.
	//RequesParam은 하나 이상 파라미터에서 사용 가능합니다.

}

이런 방식으로, "@RequestParam("실제 값") String 설정할 변수 이름" 사용된다.

 

RequestParam key 값이 존재하지 않는 경우 400 번대 에러가 뜨는데 이를 방지하고, 디폴트 값을 변수에 넣어주고 싶은 경우는,

"DefaultValue"를 이용하여 기본 값을 설정해줍니다.

" required=false " 속성을 꼭 명시해줘야 합니다. )

 

@GetMapping("getDriver")
public String viewName( @RequestParam("name",required=false,defaultValue="")
			String name, @RequestParam("name2",required="false,defaultValue="") String name2){

		//이런식으로 defaultValue를 지정하려면 required 속성을 명시해줘야 합니다.

}

 

 

| @PathVariable이란?

Case2 방식을 이용할 때 사용한다.

@PostMapping("delete/{idx}")
@ResponseBody
public void testMethod(@PathVariable("idx") int id ){
	return testService.deleteId(id);
}

위의 예제처럼 PathVariable 의 경우 url에서 각 구분자에 들어오는 값을 처리해야 할 때 사용합니다.

 

변수인자가 하나면 이렇게도 가능한 것 같다,

@GetMapping("/article/{id}")
    public Article getArtiles(@PathVariable Long id){
        return articleService.getArticles(id);
    }

 

 

구웃

 

 

 

 

 

 

참고

https://2ham-s.tistory.com/290