프로그래밍/Java
[Spring, SpringBoot] Controller에서 데이터 받는 방법 (@RequestBody, @RequestParam, @ParthVariable)
차나니
2024. 5. 27. 21:49
어느날 문득 정리하고 데이터 받는 방법에 대해 정리하고 싶어졌다 !
서버에서는 요청한 데이터를 전달 받는 방법은 다양하다 ! MVC 패턴에서 주로 사용하는 어노테이션을 위주로 정리해 보려합니다 !
@RequestBody
@RequestBody는 클라이언트가 보내는 HTTP 요청 본문(JSON, XML 등)을 HttpMessageConverter를 통해 타입에 맞는 자바 객체로 변환해줍니다 !
@PostMapping("/test")
@ResponseBody // return data
public String test(@ReqeustBody <String, String> data) {
...
}
@RequestParam
@RequestParam은 클라이언트가 요청할 때 쿼리스트링을 통해 넘어오는 매개변수를 추출할 수 있습니다 !
required가 true로 설정되어있을 해당 데이터를 필수로 전달해줘야되며, 쿼리스트링에 id가 포함되어있지 않을 때 에러를 발생시길 수 있습니다 !
// /getList?id=chanhan 으로 요청
@GetMapping("/getList")
@ResponseBody
public String getList(@RequestParam(value="id", required=false) String id) {
...
}
아래와 같이 다중으로 전달되는 쿼리스트링을 매핑할 수도 있습니다.
// /getList?id=chanhan&id=cat&id=dog 으로 요청
@GetMapping("/getList")
@ResponseBody
public String getList(@RequestParam List<String> id) {
...
}
@PathVariable
@PathVariable은 클라이언트에서 요청한 URL을 매핑할 수 있습니다 !
// /getList/chanhan/30 요청 URI
@GetMapping("/getList/{id}/{num}")
@ResponseBody
public String getList(@PathVariable("id") String id,
@PathVariable("num") int num) {
...
}