REST Api
REST API : REST API란 REST를 기반으로 만들어진 Api를 뜻합니다.
- 여기서 REST란? Representational State Transfer의 약자로 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것을 의미합니다.
REST는
- HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고,
- HTTP Method(POST, GET, PUT, DELETE, PATCH 등)를 통해
- 해당 자원(URI)에 대한 CRUD Operation을 적용하는 것을 의미합니다.
REST Api의 특징은
1. Client(서버-클라이언트 구조)
2. Stateless(무상태)
3. Cacheable(캐시 처리 가능)
4. Layered System(계층화)
5. Uniform Interface(인터페이스 일관성)
이다.
Apache, Tomcat
Apache란 오픈 소스 소프트웨어 그룹인 아파치 소프트웨어 재단에서 만드는 웹 서버 프로그램이다.
Apache는 정적인 데이터를 처리하는 웹 서버로 동적으로 데이터를 처리할 수 는 없다.
톰캣이란 Apache처럼 아파치 그룹에서 만든 WAS로 기본 Web sever인 Apache와는 다르게 동적인 데이터를 처리할 수 있게 만들어졌다.
톰캣에는 정적인 데이터를 처리할 수 있는 Apache같은 Web sever와 동적인 데이터를 처리할 수 있는 서블릿 컨테이너가 모두 들어있어, Apache 톰캣이라고 많이 불린다.
Apache와 Tomcat 장단점 | 장점 | 단점 |
Apache | - 처리 속도가 빠름 - 구조가 단순하여 비용절감 - 트래픽 과부하에 강함 |
- 정적인 데이터만 처리 가능 - 다른 서비스와 상호작용 불가 |
Tomcat | - 동적 데이터 처리 가능 | - 아파치에 비해 속도가 느림 - 트래픽 과부하에 약함 |
localhost
localhost란 컴퓨터 네트워크에서 사용하는 루프백 호스트명으로, 자신의 컴퓨터를 의미합니다.
자신의 컴퓨터를 원격의 컴퓨터처럼 통신할 수 있기에 테스트용으로 많이 쓰입니다.
Spring 프레임 워크에서는 자체적인 내장형 서버로 Tomcat, Jetty 등을 사용하고 있는데 Spring을 실행시킬 경우 내장형 서버가 자동으로 구축되며 이를 우리는 localhost를 사용해서 접근할 수 있게 된다.
Controller, service, repository, domain 차이
Spring 프레임워크에서는 보통 Model-View-Controller (MVC) 패턴을 따르는 웹 애플리케이션을 개발합니다. 이 패턴은 애플리케이션을 세 가지 주요 부분으로 분리하여 개발하는 방식입니다. 이 세 가지 주요 부분은 Controller, Service, Repository(DAO)입니다. 또한, 애플리케이션에서 사용하는 도메인 객체(Domain)도 매우 중요합니다.
- Controller: 웹 요청을 받아서 처리하고, 결과를 반환하는 역할을 합니다. Controller는 사용자가 보낸 요청을 받아서, Service를 호출하거나, 도메인 객체를 이용하여 처리한 뒤, 사용자에게 결과를 반환합니다.
- Service: 비즈니스 로직을 처리하는 역할을 합니다. Service는 Controller로부터 받은 요청을 처리하고, Repository(DAO)를 이용하여 데이터베이스와 통신합니다. Service는 여러 개의 Repository를 조합하여 비즈니스 로직을 수행합니다.
- Repository(DAO): 데이터베이스에 접근하는 역할을 합니다. Repository는 데이터베이스와 통신하여 데이터를 읽고 쓰는 등의 작업을 수행합니다.
- Domain: 애플리케이션에서 사용하는 객체를 정의하는 역할을 합니다. Domain은 데이터베이스에 저장되는 데이터의 구조를 정의하고, 애플리케이션에서 사용되는 객체의 구조를 정의합니다.
이러한 방식으로 개발을 하면
- 각각의 역할이 명확히 구분된다
- 유지보수 및 테스트가 용이해진다
- 어플리케이션의 확장성이 높아진다
라는 장점이 있다.
Get 과 Post의 차이, DTO, DAO, VO, Entity 차이
Get 방식 : 주로 데이터 조회할때 사용하며 URL에 데이터가 포함되어 전송되기 때문에 보안에 취약하다는 단점이 있지만
캐싱을 활용하여 더 빠른 조회가 가능하다.
Post 방식 : 데이터를 전송할때 사용되며, http 메세지의 body부분에 데이터를 담아 전송하기 떄문에 많은 양의 데이터
전송에 유리하지만 캐싱이 불가능하다.
DTO : (Data Transfer Object) 의 약자로 서로 다른 레이어 간의 데이터 교환을 담당하는 객체이다. 주로 Controller와Service 계층 사이에서의 데이터 전송에 사용됩니다. 일반적으로는 Setter / Getter 메소드를 가지고 있습니다.
DAO : (Data Access Object) 의 약자로 데이터베이스와의 접근을 담당하는 객체입니다. 데이터베이스에 접근하여 CRUD작업을 수행합니다.
VO : (Value Object) 의 약자로 domain에서 사용되는 값 객체입니다, Read only이며 DTO와 유사하지만 데이터 전송을 담 당하는 DTO와는 달리 domain 객체에서 사용되는 값을 가지고 있는 객체입니다.
Entity : 데이터베이스와 직접 매핑되는 객체로 데이터베이스 테이블내에 존재하는 컬럼만을 필드로 가지고 있습니다.
DB와 직접 매핑되어 있기 때문에 데이터의 변화를 줄이기 위해 Settet 메소드를 사용해서는 안된다.
※ DTO 와 Entity의 차이는 DTO 같은 경우에는 데이터의 변화가 많지만 DB와 직접 연결되어 있는 Entity 같은 경우에는
데이터의 변화가 잦으면 다른 클래스에도 문제가 될 수 도 있기 떄문에 둘을 꼭 분리 해 놓아야한다.
'백엔드 멘토링' 카테고리의 다른 글
일급 컬렉션(First-Class Collection)이란? (0) | 2023.07.10 |
---|---|
2023/04/10 - Spring 공부중 관련 질문들 [2] (0) | 2023.04.13 |
2023/04/05 - java 11, 17 특징 (0) | 2023.04.07 |
2023/03/26 - 객체지향 개념 및 UML,CBD,SOA (0) | 2023.04.07 |
2023/03/17 - 서블릿, CGI, JSP, MVC패턴 (0) | 2023.03.28 |