현재 까지 했던 부분은 docker 로 컨테이너를 만들어서 MYSQL 이랑 연결하게금 했고,
Mysql을 통해서 Todo Table과 completed Table을 만든 상태이다.
이제 해야 하는 부분이 백엔드의 RestAPI를 만들어줘야한다.
그 전에 Rest API 에 대해서 한 번 알아보고자 한다.
1. RestAPI 개념
- REST API는 웹 애플리케이션에서 데이터를 주고받기 위해 사용하는 표준화된 방식
- REST 아키텍처 스타일을 따르는 API(Application Programming Interface)임.
2. REST
- REST(Representational State Transfer)는 분산 시스템에서 자원을 효율적으로 관리하고 상호작용하기 위한 아키텍처 스타일임. Rest의 핵심 개념은 자원(Resource)와 표현(Representation), 그리고 상태(State)임
원(Resource)은 URL로 고유하게 식별됨.
② 표현(Representation)을 통해 자원 조작. JSON, XML, HTML 등 다양한 형태로 클라이언트에게 전달됨.
③ 무상태성(Statelesseness) 요청 간에 서버가 클라이언트 상태를 저장하지 않음. 각 요청은 독립적임.
④ 캐시 가능: 서버 응답은 캐시될 수 있으며, 성능을 최적화함.
⑤ 계층화된 시스템(Layered System): 서버의 물리적 구성을 알 필요 없음. 서버와의 중간계층(프록시,게이트웨이)을 사용할 수 있음.
⑥ 인터페이스의 일관성(Uniform Interface): 클라이언트와 서버가 동일한 방식으로 상호작용할 수 있도록 일관된 인터페이스 사용
3. API
- API라는 건 Application Programming Interface의 약자로, 애플리케이션 간 데이터를 주고받거나 기능을 사용할 수 있도록 정의된 규칙 집합임.
4. REST API
=> 그러니까 REST API는 아키텍처 스타일의 원칙을 따르는 웹 서비스 API임.
클라이언트는 REST API를 통해 서버와 통신하여 데이터를 요청하거나, 서버의 자원을 조작할 수 있음.
① 자원 중심임: 모든 자원은 url 로 표현됨. ex: /api/user, /api/user1
② HTTP 메서드 사용: GET(데이터 조회), POST(데이터 생성), PUT(데이터 수정), DELETE(데이터 삭제)
③ 표현형식: 요청 응답 데이터는 JSON형식을 사용함. XML, HTML도 가능
+) JSON : 속성-값 쌍(Attribute-Value Pairs)으로 이루어진 데이터 객체를 전달하기 위해 사람이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷
④ 무상태성: 서버는 요청에 필요한 정보를 클라이언트로부터 전달 받아야함. 요청간 상태를 저장하지 읂ㅇ.ㅁ
장점으로는
① 유연성: RESTAPI는 플랫폼 독립적. 다양한 클라이언트에서 사용할수있음.
② 확장성: 계증화구조 덕분에 시스템 쉽게 확장 가능
③ 표준화: 문서화 용이
④ 무상태성: 서버의 부하가 줄어들고 요청이 독립적 처리됨.
5. 책임 분리 Separation of Concerns
- 유지보수성과 확장성을 높이기 위해서는 책임 분리가 필요하다.
- Controller Service를 나눔. 이 구존느 Spring Framework의 계층형 아키텍처(Hierarchical Architecture)의 한 부분임
- 각 계층이 맡은 역할이 명확함.
- Controller는 HTTP요청/응답을 다루는 데만 집중하고, Service는 비즈니스 로직을 처리하는 데 집중
- 분리하지 않는다면, 코드가 점점길어지고 복잡해져 스파게티 코드가 될 수 있음.
1) Controller
- 요청을 처리하는 역할이다.
- 클라이언트로부터 들어온 HTTP 요청을 처리하는 입구임.
- 주된역할로는 HTTP요청(GET,POST,PUT,DELETE)을 처리함.
- 클라이언트가 보낸 데이터를 읽고 검증
- SERVICE 계층 호출하여 필요한 작업 수행함.
- SERVICE 계층에서 받은 결과를 클라이언트에게 반환.
2) Service
- 비즈니스 로직 처리하는 역할
- Controller가 요청을 전달하면 실제로 그 요청을 처리하는 로직을 담고 있는 핵심 계층
- 데이터를 처리하는 비즈니스 규칙과 로직 구현
- DB 접근이 필요할 경우 Repository 계층 호출함.
- Contoller 계층과 Repository 계층 사이의 중간다리 역할.
3) 계층 구조
① controller: 클라이언트 요청 받고 응답 처리
② Service: 비즈니스 로직 처리하고, 데이터 가공 및 조작
③ Repository(DAO): DB와 직접 상호작용
④ Model/Entity: 데이터 구조 정의
'프로젝트 > ToDoApp프로젝트-Spring' 카테고리의 다른 글
[벡앤드] Docker 를 통해서 MySQL 연결, 그 후 Spring Boot 연결 (0) | 2025.01.05 |
---|---|
[To Do App] 프론트엔드 개발 환경 (1) | 2025.01.02 |
[To Do App] 개발환경 설정 - 백엔드 개발환경 (2) | 2025.01.02 |
[To Do App] 프로젝트 설계 (0) | 2025.01.02 |