Programing/Spring Boot

코틀린 스프링부트 @RequestBody, @RequestParam, @PathVariable 사용법

딩코딩 2023. 6. 21. 21:16

언제 어떤걸 사용해야할까?

 

restAPI에서 데이터를 어떤식으로 주고 받을지에 따라 사용해야 할 어노테이션이 다르다.

 

 

@RequestBody

데이터를 Json으로 주고 받을때 사용한다.

@PostMapping("/test.json")
fun testController(@RequestBody memberDto: MemberDto): Long {       
    return memberDto.name
}

//받고자 하는 데이터 class를 생성한다.
class MemberDto(
	name: String,
	age: Long,
)

 

"http://localhost:8080/test.json" 으로 Post 요청

data는 json으로 보냄

 

@RequestParam

쿼리 파라미터를 통해서 데이터를 주고 받을때 사용한다.

@GetMapping("/test")
fun testController(
	@RequestParam ("memberName")memberName: String,
	@RequestParam ("memberAge")memberAge: Int,
): String {       
    return memberName
}

"http://localhost:8080/test?memberName=asdsad&memberAge=1" 으로 get요청

 

쿼리 파라미터는 데이터를 선택적으로 받을 수 있다.

"http://localhost:8080/test?memberName=asdsad"

"http://localhost:8080/test?memberAge=1" 모두 가능하다

대신 아래와 같이 기본값을 설정해주어야 함

@GetMapping("/test")
fun testController(
	@RequestParam ("memberName", required = false, defaultValue = "")memberName: String,
	@RequestParam ("memberAge", required = false, defaultValue = "")memberAge: Int,
): String {       
    return memberName
}

 

 

@PathVariable 

url의 경로 일부를 파라미터로 이용함

@GetMapping("/test/{memberId}")
fun testController(
	@PathVariable ("memberId")memberId: Long,
): Long {       
    return memberId
}

"http://localhost:8080/test/123" 으로 get 요청