시작하며
Spring을 사용하며 @RequestParam, @RequestBody, @ModelAttribute 3가지 어노테이션을 활용하였다.
대충 어떻게 사용하는지는 알지만 한번 정리의 필요성을 느꼈다. 정리 고고
@RequestParam
public String getTest(@RequestParam("name") String name){
System.out.println(name);
}
@RequestParam은 1개의 HTTP 요청 파라미터를 받기위해서 사용한다.
- value
- defaultValue
- required = true(기본설정 true / )false 설정가능
required = false 설정을 하지않고 파라미터를 전송하지않을시 400 에러가 발생한다.
@RequestBody
public String getTest(@RequestBody Test test){
System.out.println(test);
}
Json형태의 HTTP Body내용을 Java 객체로 변환시켜주는 역할을 한다.
Get과 Post 방식 모두 사용은 가능하지만, @RequestBody는 Body안에 Json을 포함해야한다.
하지만 Get은 QueryParameter방식으로 보내기때문에 Get은 Get답게 Post는 Post답게 사용해야한다.
@ModelAttribute
@Getter
@Setter
public class TestDto {
private String name;
private int age;
}
public class TestController {
@RequestGetMapping(value = "/hi")
public void getTest(@ModelAttribute("test") TestDto test){
System.out.println("이름 : " + test.getName());
System.out.println("나이 : " + test.getAge());
}
}
@ModelAttribute는 Form형태 기반의 요청들을 받는다. Get Post 둘다 사용가능하다. Get의 경우는 Query Parameter로 요청데이터를 보내고, Post의 경우 x-www-from-urlencoded형태로 요청데이터를 보낸다.단, DTO에 바인딩시 Setter를 통해 바인딩된다. Setter가 없으면 바인딩되지않음!