어제 TIL 에서 DTO나 Request ,Reponse 내용을 물어보던 중 애너테이션(Annotation) 내용이 헷갈려서 예제에 있는 부분 보면서 정리를 했다.
기본정보(필드값) 있는 클래스
- @Getter
-> 해당 클래스에 있는 필드의 get을 자동으로 만들어 줌
- @Setter
-> 해당 클래스에 있는 필드의 set을 자동으로 만들어 줌
api, 메서드가 들어가는 클래스
클래스 구분(=> 클래스 위에 씀)
- @Controller
-> 해당 클래스가 Controller의 역할을 수행할 수 있도록 등록해줄 줄 수 있음
- @RestController
-> @Controller + @ResponseBody
-> 해당 클래스의 모든 메서드에 @ResponseBody 애너테이션이 추가되는 효과를 부여할 수 있습니다.
API 구분(=> 클래스 안 API 위에 씀)
- @RequestMapping("/user")
-> api 주소 중복값 고정
** HTTP Method에 매핑되는 에너테이션(아래 4개)
- @GetMapping
-> get : 데이터 가져오기
- @PostMapping
-> post : 데이터 올림
- @PutMapping
-> put : 데이터 수정
- @DeleteMapping
-> delete : 데이터 삭제
API 내 사용
- @ResponseBody
-> 자바 객체 → JSON 으로 변환
-> Get API의 String return 값을 HTML 파일이 아니라 텍스트로 할 수 있게 해줌
매개변수 내 사용(API 내부 메서드의 매개변수)
★ @PathVariable , @RequestParam 둘다 client에서 정보를 바로 받아오는 것은 동일하나 @RequestParam은 URL에 표시됨
- @PathVariable
-> Client -> 서버 요청을 보낼때 데이터를 같이 보낼 수 있음
-> ex) @PathVariable String name, @PathVariable int age
- @RequestParam
-> 서버에 보내려는 데이터를 URL 경로 마지막에 ? 와 & 를 사용하여 추가할 수 있음
-> URL에 자동으로 정보가 추가됨 >> ?name=Robbie&age=95
-> ex) @RequestParam String name, @RequestParam int age
★ 기존에 return 값을 String으로 줬다면 아래 2개는 class로 줘서 객체를 받아옴
- @ModelAttribute
-> @RequestParam 는 컬럼값이 여러개인 경우 코드가 너무 길어지는데 ModelAttribute는 java에 객체로 받아올 수 있음
-> URL에 정보가 담긴다.
-> ex) @ModelAttribute Star star => star.name
- @RequestBody
-> HTML boby에 JSON 데이터를 java 객체로 전달
-> URL 데이터가 나타나지 않음
-> @RequestBody Star star => star.name