Skip to content

Commit

Permalink
docs: Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
sa46lll committed Dec 25, 2023
1 parent 7fa923b commit d2cf25f
Showing 1 changed file with 118 additions and 1 deletion.
119 changes: 118 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,118 @@
# file-shield
# 파일 확장자 차단

## 요구 사항

### 확장자 목록 조회

- 고정/커스텀 확장자 목록을 조회할 수 있어야 합니다.

### 고정 확장자 차단

- 고정 확장자를 차단할 수 있습니다.

### 고정 확장자 차단 해제

- 고정 확장자 차단을 해제할 수 있습니다.

### 커스텀 확장자 차단 (생성)

- 커스텀 확장자를 추가해서 차단할 수 있습니다.

### 커스텀 확장자 차단 해제 (삭제)

- 커스텀 확장자를 삭제해서 차단을 해제할 수 있습니다.

## API 명세

### 확장자 목록 조회

```
PATCH /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 |
|-----------------|------|-------------------------------|-----------------|
| 커스텀 확장자 차단 (생성) | 400 | InvalidInputException | 확장자가 올바르지 않습니다. |
| | 409 | ExtensionDuplicationException | 확장자가 이미 존재합니다. |

## 프로젝트 구조

외부 변경에 유연하게 대처하기 위해 멀티 모듈 구성의 헥사고날 아키텍처를 적용하였습니다.
외부 요소에 의존하지 않고 도메인 계층에 집중할 수 있도록 하였습니다.

### 계층 구조

- Application
- 비즈니스 로직과 유즈케이스를 구현하는 계층입니다.
- 도메인 모델과 상호작용하며 핵심 비즈니스 규칙을 수행합니다.
- Domain
- 핵심 도메인 모델과 비즈니스 규칙을 정의하는 계층입니다.
- 소프트웨어의 핵심 로직이 위치합니다.
- infrastructure
- 외부 시스템과의 통합, 데이터베이스 접근 등을 담당하는 계층입니다.
- Application 계층의 요청에 따라 외부와의 연동을 처리합니다.
- Presentation
- 사용자와의 상호작용을 담당하는 계층입니다.
- 사용자의 요청을 처리하고 응답을 반환하는 역할을 수행합니다.
- Bootstrap
- 애플리케이션의 초기화와 설정을 담당하며, 프로젝트의 시작점입니다.
- 의존성 주입, 환경 설정 등을 처리하여 전체 애플리케이션을 설정합니다.

## 개발 환경

- Java 17
- Spring Boot 3.2.1
- Gradle
- JPA
- H2

![file-extension-ss](https://github.com/sa46lll/file-shield/assets/62706048/65f8414b-b9fd-4d7a-b87b-2d55e6c8a369)

0 comments on commit d2cf25f

Please sign in to comment.