- 고정/커스텀 확장자 목록을 조회할 수 있어야 합니다.
- 고정 확장자를 차단할 수 있습니다.
- 고정 확장자 차단을 해제할 수 있습니다.
- 커스텀 확장자를 차단할 수 있습니다.
- 커스텀 확장자를 차단을 해제할 수 있습니다.
GET /api/v1/file-extensions
Response
Name | Type | Description |
---|---|---|
fixidExtention.extensionId | Number | 확장자 ID |
fixidExtention.extension | String | 확장자 |
fixidExtention.isBlocked | Boolean | 차단 여부 |
customExtensions.extensionId | Number | 확장자 ID |
customExtensions.extension | String | 확장자 |
customExtensions.isBlocked | Boolean | 차단 여부 |
PATCH /api/v1/file-extensions/{{extensionId}}/fixed-block
PATCH /api/v1/file-extensions/{{extensionId}}/fixed-unblock
POST /api/v1/file-extensions/custom-block
Request
Name | Type | Description | Required |
---|---|---|---|
extension | String | 확장자 | Y |
Response
Name | Type | Description |
---|---|---|
extensionId | Number | 확장자 ID |
DELETE /api/v1/file-extensions/{{extensionId}}/custom-unblock
API | Code | Message | Description |
---|---|---|---|
고정 확장자 차단 | 404 | NotFoundException | 확장자가 존재하지 않습니다. |
커스텀 확장자 차단 (생성) | 400 | InvalidInputException | 확장자가 올바르지 않습니다. |
409 | ExtensionDuplicationException | 확장자가 이미 존재합니다. |
외부 변경에 유연하게 대처하기 위해 멀티 모듈 구성의 헥사고날 아키텍처를 적용하였습니다. 외부 요소에 의존하지 않고 도메인 계층에 집중할 수 있도록 하였습니다.
- Application
- 비즈니스 로직과 유즈케이스를 구현하는 계층입니다.
- 도메인 모델과 상호작용하며 핵심 비즈니스 규칙을 수행합니다.
- Domain
- 핵심 도메인 모델과 비즈니스 규칙을 정의하는 계층입니다.
- 소프트웨어의 핵심 로직이 위치합니다.
- infrastructure
- 외부 시스템과의 통합, 데이터베이스 접근 등을 담당하는 계층입니다.
- Application 계층의 요청에 따라 외부와의 연동을 처리합니다.
- Presentation
- 사용자와의 상호작용을 담당하는 계층입니다.
- 사용자의 요청을 처리하고 응답을 반환하는 역할을 수행합니다.
- Bootstrap
- 애플리케이션의 초기화와 설정을 담당하며, 프로젝트의 시작점입니다.
- 의존성 주입, 환경 설정 등을 처리하여 전체 애플리케이션을 설정합니다.
- Java 17
- Spring Boot 3.2.1
- Gradle
- JPA
- H2
- Thymeleaf
- JUnit5
./gradlew clean build
./gradlew :fileshield-bootstrap:bootRun
브라우저에서 http://localhost:8080/home 로 접속합니다.
- 확장자가 이미 존재하는 경우 예외를 발생시킵니다.
- 확장자는 공백이거나 20자를 초과할 수 없습니다.
- 확장자는 영문자, 숫자로 이루어져야 합니다.
- 개발 및 테스트 편의를 위해 ApplicationRunner를 활용하여 임시로 초기 데이터를 생성합니다.
- Domain과 Application 계층에 대한 테스트 코드를 작성하였습니다.
- Domain 계층은 비즈니스 규칙과 제약 조건을 테스트하기 위해 상태 기반 테스트를 작성하였습니다.
- Application 계층은 비즈니스 로직이 변경되는 경우를 고려하여 행위 기반 테스트를 작성하였습니다.