REST API
REST API: REST API는 REST를 기반으로 하는 API를 말합니다.
– 여기서 REST란? Representational State Transfer의 약자로 리소스를 이름으로 식별하여 리소스의 상태를 교환하는 모든 것을 의미합니다.
REST는
- HTTP URI(Uniform Resource Identifier)를 통해 리소스를 지정하고,
- HTTP 방식(POST, GET, PUT, DELETE, PATCH 등)을 통해
- 해당 리소스(URI)에 CRUD 연산을 적용하는 것을 의미합니다.
REST API의 특징
1. 클라이언트(서버-클라이언트 구조)
2. 무국적자
3. 캐시 가능
4. 레이어드 시스템
5. 통일된 인터페이스
오전.
아파치, 톰캣
아파치란? 오픈 소스 소프트웨어 그룹 아파치 소프트웨어 재단만든 웹 서버 프로그램.
Apache는 정적 데이터를 처리하고 데이터를 동적으로 처리할 수 없는 웹 서버입니다.
톰캣은 아파치와 마찬가지로 아파치 그룹에서 만든 WAS로 기본 웹 서버인 아파치와 달리 동적 데이터를 처리하도록 만들어졌다.
Tomcat은 Apache와 같이 정적 데이터를 처리할 수 있는 웹 서버와 동적 데이터를 처리할 수 있는 서블릿 컨테이너를 모두 포함하므로 Apache Tomcat이라고도 합니다.
아파치와 톰캣의 장단점 | 장점 | 불리 |
아파치 | – 빠른 처리 속도 – 구조가 간단하여 원가절감 – 트래픽 과부하에 강함 |
– 정적 데이터만 처리 가능 – 다른 서비스와 상호 작용할 수 없습니다. |
수코양이 | – 동적 데이터 처리 가능 | – 아파치보다 느림 – 트래픽 과부하에 약함 |
로컬 호스트
로컬 호스트 란 무엇입니까 컴퓨터 네트워크에서 사용되는 루프백 호스트 이름으로 자신의 컴퓨터를 의미합니다.
마치 원격 컴퓨터인 것처럼 자신의 컴퓨터와 통신할 수 있기 때문에 테스트에 자주 사용됩니다.
Spring 프레임워크는 자체 내장 서버로 Tomcat, Jetty 등을 사용한다.
Spring이 실행되면 내장 서버가 자동으로 구축되며 localhost를 사용하여 액세스할 수 있습니다.
컨트롤러, 서비스, 저장소, 도메인 차이점
Spring 프레임워크는 일반적으로 MVC(Model-View-Controller) 패턴에 따라 웹 애플리케이션을 개발합니다.
이 패턴은 응용 프로그램을 세 가지 주요 부분으로 분리하여 개발하는 방법입니다.
이 세 가지 주요 부분은 컨트롤러, 서비스 및 리포지토리(DAO)입니다.
또한 응용 프로그램에서 사용하는 도메인 개체도 매우 중요합니다.
- 제어 장치: 웹 요청을 받아 처리하고 결과를 반환합니다.
컨트롤러는 사용자가 보낸 요청을 받아 도메인 개체를 사용하여 서비스를 호출하거나 처리하고 그 결과를 사용자에게 반환합니다. - 서비스: 비즈니스 로직을 처리하는 역할을 합니다.
서비스는 Controller로부터 받은 요청을 처리하고 Repository(DAO)를 사용하여 데이터베이스와 통신합니다.
서비스는 여러 Repository를 결합하여 비즈니스 로직을 실행합니다. - 저장소(DAO): 데이터베이스에 접근하는 역할을 합니다.
리포지토리는 데이터베이스와 통신하여 데이터를 읽고 쓰는 등의 작업을 수행합니다. - 도메인: 어플리케이션에서 사용되는 객체를 정의하는 역할을 합니다.
도메인은 데이터베이스에 저장된 데이터의 구조와 애플리케이션에서 사용되는 객체의 구조를 정의합니다.
이런식으로 발전
- 각 역할이 명확하게 정의됨
- 유지 보수 및 테스트 용이성
- 애플리케이션 확장성 증가
~의 장점이 있다
Get과 Post, DTO, DAO, VO 및 Entity의 차이점
Get 방식 : 주로 데이터 검색에 사용되며 데이터가 URL에 포함되어 전송되기 때문에 보안에 취약한 단점이 있습니다.
캐싱을 활용하면 더 빠른 조회가 가능합니다.
Post 방식 : 데이터를 보낼 때 사용하며, http 메시지의 본문에 데이터가 포함되어 있기 때문에 많은 양의 데이터가 전송된다.
전송에는 유리하지만 캐싱에는 불가능합니다.
DTO: (Data Transfer Object)는 서로 다른 계층 간의 데이터 교환을 담당하는 개체입니다.
주로 컨트롤러와 서비스 계층 간의 데이터 전송에 사용됩니다.
일반적으로 setter/getter 메서드가 있습니다.
DAO: (Data Access Object)의 약자로, 데이터베이스 접근을 담당하는 개체입니다.
데이터베이스에 액세스하고 CRUD 작업을 수행합니다.
VO: (Value Object)의 약자로 도메인에서 사용되는 값 객체입니다.
읽기 전용이고 DTO와 유사하지만 데이터 전송을 담당하는 DTO와 달리 도메인 개체에서 사용되는 값을 갖는 개체입니다.
엔터티: 데이터베이스에 직접 매핑되고 데이터베이스 테이블에 필드로 존재하는 열만 있는 개체입니다.
DB와 직접 매핑되기 때문에 데이터 변경을 줄이기 위해 Settet 방식을 사용해서는 안 됩니다.
※ DTO와 Entity의 차이점은 DTO의 경우 데이터의 변화가 많은 반면, DB에 직접 연결된 Entity의 경우
데이터가 자주 변경되면 다른 클래스와 문제가 발생할 수 있으므로 둘을 분리해야 합니다.