Spring Boot & JPA
2.6. RESTful API 컨트롤러 개발
backend 따라쟁이
2025. 1. 3. 20:29
1. RESTful API 컨트롤러란?
RESTful API 컨트롤러는 클라이언트로부터 요청을 받고, 비즈니스 로직을 처리하며, 최종적으로 응답을 반환하는 역할을 합니다. Spring Boot에서는 @RestController와 다양한 HTTP 메서드 어노테이션(@GetMapping, @PostMapping, @PutMapping, @DeleteMapping)을 사용하여 컨트롤러를 구현합니다.
주요 역할
- 클라이언트 요청 처리 (GET, POST, PUT, DELETE 등)
- 비즈니스 로직 호출 (Service 계층과 연동)
- HTTP 상태 코드와 데이터를 클라이언트에 반환
2. RESTful API 설계
이번 프로젝트에서는 CRUD 기능을 위한 RESTful API를 다음과 같이 설계했습니다:
HTTP MethodEndpoint기능
GET | /api/data | 모든 데이터 조회 |
GET | /api/data/{id} | 특정 데이터 조회 |
POST | /api/data | 데이터 추가 |
PUT | /api/data/{id} | 데이터 수정 |
DELETE | /api/data/{id} | 데이터 삭제 |
3. 컨트롤러 구현
코드
컨트롤러는 SamTableService를 호출하여 데이터를 처리하고 클라이언트에 응답합니다.
4. 컨트롤러 코드 설명
1) @RestController
- 해당 클래스가 RESTful 웹 서비스의 컨트롤러임을 나타냅니다.
- JSON 형식의 데이터를 반환하도록 설정됩니다.
2) HTTP 메서드 어노테이션
- @GetMapping: 데이터 조회용 엔드포인트를 정의합니다.
- @PostMapping: 새로운 데이터를 추가하는 엔드포인트를 정의합니다.
- @PutMapping: 데이터를 수정하는 엔드포인트를 정의합니다.
- @DeleteMapping: 데이터를 삭제하는 엔드포인트를 정의합니다.
3) @PathVariable
- URL 경로에서 변수를 받아옵니다.
- 예: /api/data/{id}에서 {id}를 변수로 처리.
4) @RequestBody
- 클라이언트가 전송한 JSON 데이터를 객체로 변환합니다.
- 예: { "keyno": 1, "value": "Sample Value" }를 SamTable 객체로 매핑.
5) @CrossOrigin
- CORS(Cross-Origin Resource Sharing) 정책을 설정하여 다른 도메인(예: 프론트엔드 서버)에서 API를 호출할 수 있도록 허용합니다.
5. RESTful API 테스트
RESTful API가 제대로 작동하는지 확인하기 위해 Postman을 사용하여 다음 요청을 테스트합니다.
1) 데이터 조회 (GET)
- Endpoint: GET /api/data
- 응답 예시:
2) 데이터 추가 (POST)
- Endpoint: POST /api/data
- Request Body
- 응답 예시
3) 데이터 수정 (PUT)
- Endpoint: PUT /api/data/2
- Request Body
- 응답 예시
4) 데이터 삭제 (DELETE)
- Endpoint: DELETE /api/data/2
- 응답: HTTP 200 OK
6. 전체 데이터 흐름
- 클라이언트 요청: 클라이언트가 HTTP 요청을 전송.
- 컨트롤러 처리: 컨트롤러가 요청을 받아 Service 계층 호출.
- 비즈니스 로직: Service 계층이 Repository 호출 및 비즈니스 로직 처리.
- 데이터베이스 연동: Repository가 데이터베이스와 상호작용.
- 응답 반환: 처리 결과를 클라이언트에 JSON 형식으로 반환.
7. 결론
RESTful API 컨트롤러는 클라이언트와 서버 간의 상호작용을 처리하는 핵심 요소입니다. 이번 프로젝트에서는 CRUD 기능을 지원하는 RESTful API를 설계하고, 컨트롤러를 통해 이를 구현했습니다. 다음 섹션에서는 애플리케이션의 테스트 및 최종 실행 결과를 정리하겠습니다.