설정 관련 Annotation
Annotation | 설명 | 비고 |
@SpringBootApplication | -스프링부트 애플리케이션의 시작점을 나타내는 어노테이션 입니다 | |
@Controller | -Http 요청을 처리하는 컨트롤러 클래스를 정의하는 어노테이션 입니다 | Spring MVC 뷰를 반환하는데 사용 됩니다. |
@RestController | -RESTful 웹 서비스를 위한 컨트롤러를 정의하는 어노테이션 입니다 | RESTful 웹 서비스의 JSON,XML 등의 응답을 반환하는데 사용 됩니다. |
[더 알아보기]
- @Controller는 일반적으로 HTTP 요청을 처리하고 '뷰'를 반환하는데 사용이 됩니다.
- @RestController는 HTTP요청에 대한 RESTful웹 서비스의 JSON,XML등의 응답을 반환하는데 사용이 됩니다
RESTful API의 행위(Verb) Annotation
Annotation | HTTP | Method의 역할 | 비고(예시) |
@GetMapping | GET | 클라이언트가 리소스를 조회할때 사용 | @GetMapping( value ="/user") |
@PostMapping | POST | 클라이언트가 리소르를 생성할 때 사용 | @PostMapping( value = "/user) |
@PutMapping | PUT | 클라이언트가 리소스를 갱신할 때 사용 | @PutMapping( value="/user) |
@PatchMapping | PATCH | 클라이언트가 리소스 일부를 갱신할 때 사용 | @PatchMapping( value="/users) |
@DeleteMapping | DELETE | 클라이언트가 리소스를 삭제할 때 사용 | @DeleteMapping( value="users) |
@RequestMapping | ALL | 요청 메서드(GET,POST,PUT, DELETE등)과 URL매핑을 할께 지정 할 수 있다. |
@RequestMapping( value="/users method= RequestMethod.GET) |
[더 알아보기]
@RequestMapping과 @00Mapping중 무엇을 사용해야 할까?
-간단한 HTTP요청에 대해서는 @00Mapping을 사용하는것이 코드 가독성과 유지보수성을 높일 수 있지만
여러개의 HTTP요청 메서드에 대해 하나의 메서드로 처리해야하는 경우는 @RequestMapping을 사용해야한다.
RESTful API의 표현(Representation) Annotation
표현(Representation) 이란?
-RESTful에서 클라이언트와 서버간의 데이터 통신을 위해 주고받는 데이터 형식의 (JSON,XML,HTML)을 의미합니다
1.JSON 데이터 형식의 전송 방식
- 클라이언트에서 API로 데이터를 전송 방식으로는 'GET방식'과 'POST방식' 을 이용하는 전송 방식이 있습니다.
구분 | GET방식 | POST방식 |
전송 데이터 | URL끝에 파라미터를 붙여서 서버에 요청을 보내는 방식 | HTTP Body에 담아서 서버에 요청을 보내는 방식 |
전송 데이터 크기 제한 | 데이터의 양에 제한 있음 | 데이터의 양에 제한 없음 |
캐싱 가능 여부 | 가능 | 불가능 |
보안 | 데이터 노출 가능성 여부 있음 | 데이터 노출 가능성 낮음 |
사용 예시 | 검색어 전송,페이지 요청 | 로그인,회원가입,게시글 작성 |
[더 알아보기]
캐싱이란?
이전에 요청한 데이터를 저장해 두었다가 다음 요청에 시에 바로 제공하는 것을 말합니다.
이를통해서 네이트워크 대역폭을 절약하고, 서버의 부하를 줄일 수 있습니다.
데이터 형식 주요 어노테이션
Annotation | 설명 | 예시 |
@Pathvariable | 'URL 경로의 일부'를 매개변수로 전달받는 어노테이션 | @GetMapping("/user/{id}") public ResponseEntity getUserById( @Pathvariable Long id){} |
@RequestParam | 'HTTP 요청 파라미터'를 매개변수로 전달 받는 어노테이션 | @GetMapping("/users") public ResponseEntity<list> getAllUser(@RequestParam("age") int age){} |
@RequestBody | HTTP 요청의 '본문(body)'을 매개변수로 전달 받는 어노테이션 | @PostMapping("/user") public ResponseEntity createUser( @RequestBody User user){} |
@ResponseBody | HTTP 응답의 본문(body)을 생성하는 메서드 에 적용하는 어노테이션 | @GetMapping("/data") public @ResponseBody Map<String,object="">getData(){} |
@ResponseStatus | HTTP응답의 상태 코드를 지정하는 어노테이션 | @GetMapping("/users/{id}") @ResponseStatus(HttpStatus.NOT_FOUND) public void getUserById(@PathVariable Long id){} |
반응형
'JAVA' 카테고리의 다른 글
[Spring] Controller와 Service의 역할 (0) | 2024.05.08 |
---|---|
[자바]RestAPI (0) | 2024.05.07 |
java람다/스트림 (0) | 2024.05.06 |
DTO 와 VO (0) | 2024.05.04 |
웹 MVC (0) | 2024.05.04 |
댓글