REST ful API RESTful API는 Representational State Transfer(표현 상태 전이)를 기반으로 하는 웹 서비스의 설계 원칙을 따르는 API입니다. REST는 분산 시스템에서 리소스 간 상태 전이를 위한 아키텍처 스타일로, 간결하고 확장 가능한 디자인을 제공합니다. RESTful API는 HTTP를 통해 자원을 나타내고 상호 작용하는 방식을 규정하며, REST의 기본 원칙을 따라야 합니다.
RESTful API의 주요 특징과 원칙은 다음과 같습니다:
자원 (Resource): 모든 것을 리소스로 표현합니다. 각 리소스는 고유한 식별자(URI)를 가지며, 이를 통해 리소스에 접근합니다.
데코레이터를 사용하는 이유와 장점 데코레이터는 코드에 메타데이터를 첨부하고, 이를 기반으로 코드를 변형하거나 행동을 추가하는 강력한 도구입니다.
여러 이유로 데코레이터를 사용할 수 있지만 주된 이점은 다음과 같습니다:
메타프로그래밍(Metaprogramming): 데코레이터를 사용하면 코드에 대한 정보를 주석(annotation)으로 첨부할 수 있습니다. 이 메타데이터를 기반으로 코드를 동적으로 변형하거나 특정 동작을 추가할 수 있습니다.
가독성과 모듈성 향상: 데코레이터를 사용하면 코드를 더 읽기 쉽게 만들 수 있습니다. 특히 프레임워크나 라이브러리에서 자주 사용되는 패턴이나 행동을 명시적으로 표현할 수 있습니다.
Guards 가드(Guard)는 라우트 핸들러 메서드의 실행 여부를 결정하는 역할을 합니다. 특히, 가드는 특정 조건이 충족되지 않으면 요청을 처리하기 전에 실행을 막습니다. 이는 권한 검사, 인증, 혹은 다양한 비즈니스 규칙을 적용할 때 유용합니다.
간단한 예로, 사용자의 권한을 확인하는 가드를 상상해볼 수 있습니다. 특정 엔드포인트에 접근하려는 사용자의 역할이나 권한이 충족되지 않으면 가드가 요청을 차단할 수 있습니다. 이를 통해 요청이 핸들러 메서드에 도달하기 전에 필요한 조건을 검사하고 처리할 수 있습니다.
가드는 @Injectable() 데코레이터로 주석이 달린 클래스로, CanActivate 인터페이스를 구현합니다.
Modules 모듈은 @Module() 데코레이터로 주석이 달린 클래스입니다. @Module() 데코레이터는 Nest가 애플리케이션 구조를 구성하는 데 사용하는 메타데이터를 제공합니다.
각 어플리케이션은 최소한 하나의 모듈, 루트 모듈을 가지고 있습니다. 루트 모듈은 Nest가 어플리케이션 그래프를 구축하는데 사용하는 시작점입니다. 어플리케이션 그래프는 Nest가 Modules 및 Providers 간의 관계와 의존성을 해결하는 데 사용하는 내부 데이터 구조입니다. 매우 작은 애플리케이션의 경우 이론적으로 루트 모듈만을 가질 수 있지만, 이는 일반적인 경우가 아닙니다. 모듈은 구성 요소를 효과적으로 구성하는 데 강력하게 권장되는 방법이며, 대부분의 애플리케이션에서는 각각이 밀접한 관련성을 가진 일련의 기능을 캡슐화하는 여러 모듈을 사용하는 결과로서의 아키텍처가 형성됩니다.