twocowsong

@ModelAttribute, @PathVariable, @RequestBody 본문

IT/SpringBoot

@ModelAttribute, @PathVariable, @RequestBody

WsCode 2022. 1. 18. 21:36

프론트에서 form태그 또는 url로 서버까지 데이터를 전송하고 Controller에서 받은 데이터와 선언된 객체에 데이터맵핑에는 여러가지 편리한 어노테이션 존재합니다.
(객체 데이터 맵핑원리가 궁금하면 Argument Resovler를 찾아보시면됩니다.)

컨트롤러에서 객체에 쉽게 데이터를 맵핑할수있는 어노테이션을 설명드리겠습니다.

@Getter
@Setter
public class Car{
	private int speed;
}

맵핑하기위한 Car객체입니다.

@ModelAttribute

	@ResponseBody
	@RequestMapping("/test")
	public String modelAttributeTest(@ModelAttribute Car car) {
		log.info("car speed : " + car.getSpeed());
		return "ok";
	}

 


파라미터명과 보내는 key의 이름이 동일하다면 자동으로 맵핑됩니다. 참고로 @ModelAttribute 생략이 가능합니다

	public String modelAttributeTest(Car car) {}

위처럼 생략이 가능합니다.


@PathVariable

	@ResponseBody
	@RequestMapping("/test/{speed}")
	public String pathVariableTest(@PathVariable("speed") String speed) {
		log.info("car speed : " + speed);
		return "ok";
	}

 


@PathVariable는 url에서 데이터값을 얻어 맵핑됩니다. 벨로그 현재 url도 PathVariable로 개발됐다고 생각합니다. PathVariable도 ("speed")가 변수이름과 같으면 생략이 가능합니다.

	@RequestMapping("/test/{speed}")
	public String pathVariableTest(@PathVariable String speed) {}

위처럼 생략해서 사용이 가능합니다.


@RequestBody
RequestBody는 rest api 통신을 할때 많이 사용합니다.

	@ResponseBody
	@RequestMapping("/test/body")
	public String requsetBodyTest(@RequestBody Car car) {
		log.info("car speed : " + car.getSpeed());
		return "ok";
	}

 


Body에 데이터를 JSON형태로 전송시 자동으로 맵핑해줍니다.

'IT > SpringBoot' 카테고리의 다른 글

@RestController @Controller  (0) 2022.01.24
@Scheduled  (0) 2022.01.23
Redirect, forward, RedirectAttributes  (0) 2022.01.23
@Data  (0) 2022.01.18
@Value 어노테이션  (0) 2022.01.18