@Component
@Bean
@Controller
@RequestMapping
@Controller // IdkController Class는 Controller 역할을 한다.
@RequestMapping("/idk") // IdkController Class는 /idk로 들어오는 요청을 모두 처리한다.
public class IdkController {
@RequestMapping(method=RequestMethod.GET)
public String getIdk(String word) {
// GET Method, /idk 요청 처리
}
@RequestMapping(method=RequestMethod.POST)
public String addIdk(String word) {
// POST Method, /idk 요청 처리
}
@RequestMapping("/a_word")
public String addIdk(String word) {
// GET Method, /idk/a_word 요청 처리
// 요청 처리 Method 생략 시 Default Method = GET
}
}
@RequestParam
URL에 전달되는 파라미터를 메서드의 인자와 매칭시켜 파라미터를 받아 처리한다. JSON 형식의 Body를 MessageConverter를 통해 Java 객체로 변환시킨다.
@Controller
@RequestMapping("/idk")
public class IdkController {
@RequestMapping(method=RequestMethod.GET)
public String getIdk(@RequestParam String id, @RequestParam(name="nick") String nickName {
// GET Method, /idk 요청 처리
// 요청: https://velog.io/idk?id=noob&nick=babo
String result = idk + " is " + nickName + ".";
...
}
}
result = noob is babo.
@RequestBody
Body에 전달되는 데이터를 메소드의 인자와 매칭시켜 데이터를 받아서 처리할 때 사용한다. 클라이언트가 보내는 HTTP 요청 본문을 Java 오브젝트로 변환한다.(클라이언트가 Body에 JSON or XML과 같은 형태로 값을 전송하면 해당 내용을 Java 오브젝트로 변환)
IDK = {id:Noob, old: 29}
@Controller
@RequestMapping("/idk")
public class IdkController {
@RequesMapping(method=RequestMethod.POST)
public String addIdk(@RequestBody IDK idk) {
String id = idk.id;
String old = idk.old;
...
}
}
result: id = Noob, old = 29
@ResponseBody
메서드에서 리턴되는 값이 view로 출력되지 않고 HTTP Response Body에 직접 사용된다. return 시에 JSON, XML과 같은 데이터를 리턴한다.
@Controller
@RequestMapping("/idk")
public class IdkController {
@RequesMapping(method=RequestMethod.POST)
@ResponseBody
public String getIdk(@RequestParam String id, @RequestParam(name="nick") String nickName) {
// 요청: https://velog.io/idk?id=noob&nick=babo
IDK idk = new IDK();
idk.setId(id);
idk.setNickName(nickName);
return idk;
}
}
result: IDK = { id: noob, nickName: babo }
@Autowired
@GetMapping
@Controller
@RequestMapping("/idk")
public class IdkController {
@GetMapping("/")
public String getIdk(Idk idk) {
// Get Method, /idk 요청 처리
}
}
@PostMapping
@Controller
@RequestMapping("/idk")
public class IdkController {
@PostMapping("/")
public String addIdk(Idk idk) {
// Post Method, /idk 요청 처리
}
}
@Test
@Test
public void testIdk() {
// 테스트 내용
}
출처. "스프링(Spring)에서 자주 사용하는 Annotation 개념 및 예제 정리", https://melonicedlatte.com/2021/07/18/182600.html, (2023.01.27)