728x90
도입
최근 Spring Boot를 활용해 간단한 To-Do 리스트 API를 개발하면서
@PostMapping, @GetMapping 등 애너테이션의 사용법과 컨트롤러(Service와 연계된 로직) 작성법을 익힐 수 있었습니다.
이 글에서는 RESTful API를 설계하며 Controller와 Service 레이어를 작성하는 과정을 공유하고자 합니다.
주요 개념 설명
RESTful API
- REST(Representational State Transfer) 아키텍처 스타일을 기반으로 설계된 API 입니다. REST는 웹에서 데이터를 주고받는 데 있어 간단하고 일관성 있는 방식을 제공합니다.
- 자원 : 모든 데이터는 자원으로 간주됩니다.
- HTTP 메서드 사용 : HTTP 메서드(GET, POST, PUT, DELETE 등)를 활용하여 자원에 대한 작업을 정의합니다.
- Stateless : 서버는 클라이언트의 상태를 저장하지 않고, 각 요청은 독립적이어야 합니다.
- URI를 통한 자원 식별 : 자원은 고유한 URI를 통해 식별됩니다.
REST API의 개념과 HTTP 메서드의 역할
REST API는 클라이언트가 서버의 자원에 접근하고 조작할 수 있도록 HTTP 메서드를 사용합니다.
- GET
- 자원 조회에 사용됩니다.
- 특정 사용자의 정보를 가져오기 -> GET /users/1
- POST
- 새로운 자원을 생성할 때 사용됩니다.
- 새 게시글 생성 -> POST /posts
- PUT
- 자원을 대체하거나 전체 업데이트에 사용됩니다
- 사용자 정보 전체 수정 -> PUT /users/1
- PATCH
- 자원의 일부만 업데이트할 때 사용됩니다.
- 사용자 이메일 수정 -> PATCH /users/1
- DELETE
- 자원을 삭제할 때 사용됩니다.
- 특정 게시글 삭제 -> DELETE /posts/1
Spring 애너테이션(annotation)
Spring Framework는 RESTful API를 효율적으로 개발할 수 있도록 다양한 애너테이션을 제공합니다. 애너테이션은 간단한 코드로 HTTP 요청을 처리하고, 자원의 CRUD(Create, Read, Update, Delete) 작업을 구현할 수 있도록 도와줍니다.
주요 Spring Annotation 설명
1. @RestController
- Spring MVC에서 컨트롤러 클래스를 정의할 때 사용됩니다.
- @Controller와 @ResponseBody의 결합으로, JSON 형식의 데이터를 반환합니다.
2. @RequestMapping
- 클래스나 메서드의 기본 URL을 설정합니다.
- @GetMapping, @PostMapping 등의 세부 애너테이션도 @RequestMapping의 일종입니다.
3. @PostMapping
- HTTP POST 요청을 처리합니다.
- 주로 클라이언트로부터 데이터를 받아 서버에 새 자원을 생성할 때 사용됩니다.
@PostMapping
public ResponseEntity<TodoResponse> create(){
System.out.println("CREATE");
return null;
}
4. @GetMapping
- HTTP GET 요청을 처리합니다.
- 주로 데이터를 조회할 때 사용됩니다.
@GetMapping("{id}")
public ResponseEntity<TodoResponse> readOne() {
System.out.println("READ ONE");
return null;
}
@GetMapping
public ResponseEntity<List<TodoResponse>> readAll() {
System.out.println("READ ALL");
return null;
}
5. @PatchMapping
- HTTP PATCH 요청을 처리합니다.
- 자원의 일부를 업데이트할 때 사용됩니다.
@PatchMapping("{id")
public ResponseEntity<TodoResponse> update(){
System.out.println("UPDATE");
return null;
}
6. @DeleteMapping
- HTTP DELETE 요청을 처리합니다.
- 자원을 삭제할 때 사용됩니다.
@DeleteMapping("{id")
public ResponseEntity<?> deleteOne(){
System.out.println("DELETE");
return null;
}
@DeleteMapping
public ResponseEntity<?> deleteAll(){
System.out.println("DELETE ALL");
return null;
}
'개발 > Spring & Spring Boot' 카테고리의 다른 글
[Spring Boot] @CreatedDate와 @LastModifiedDate 필드가 null로 표시될 때 해결법! (0) | 2024.12.31 |
---|