- 간단한 텍스트/파일을 저장하는 API 서버
- node 14.x
- yarn
- java jdk 8
- docker
WORKSPACE="./front/webclipboard"
OUTPUT_DIR="../../src/main/resources/static/"
cd $WORKSPACE
yarn install
CI=false yarn run build
mkdir -p $OUTPUT_DIR
cp -r build/* $OUTPUT_DIR./gradlew clean build --exclude-task test- EXPOSE: 80/tcp, 443/tcp
- 환경 변수
| KEY | Description | Example |
|---|---|---|
| STORAGE_PATH | 파일 저장 경로 | /data/storage |
| KEY_STORE | PKCS12 형식 인증서 파일 | /ssl/cert-bundle.p12 |
| KEY_STORE_PASSWORD | 인증서 비밀번호 | password |
- 파일명에 파일 ID, 타입, 만든이, 상태를 저장
- 아래 json을 url safe base64 인코딩해 파일명으로 사용
{
"id": "8f7a67aa-834f-11ec-a8a3-0242ac120002",
"type": "text",
"creator": "admin",
"hash": "5eb63bbbe01eeed093cb22bb8f5acdc3"
}- id: 파일 식별용 uuid
- type: text | file
- creator: 만든이
- hash: 파일 내용 md5 해시
- 업로드 완료 후 해시를 계산하므로 업로드 실패시 값이 null일 것
- GET /api/files/{creator}
| Parameter | Description |
|---|---|
| creator | 만든이 |
| Status Code | Description |
|---|---|
| 200 OK | 성공 |
Example
[
{
"id": "8f7a67aa-834f-11ec-a8a3-0242ac120002",
"type": "text",
"creator": "admin",
"hash": "5eb63bbbe01eeed093cb22bb8f5acdc3"
},
{
"id": "3f7a67aa-834f-11ec-a8a3-0242ac120002",
"type": "file",
"creator": "admin",
"hash": "1eb63bbbe01eeed093cb22bb8f5acdc3"
}
]- DELETE /api/file/{id}/{creator}
| Parameter | Description |
|---|---|
| id | 파일 id |
| creator | 만든이 |
| Status Code | Description |
|---|---|
| 200 OK | 성공 |
| 401 Unauthorized | 파일 만든이가 아님 |
| 404 Not Found | id에 해당하는 파일이 없음 |
- GET /api/text/{id}/{creator}
| Parameter | Description |
|---|---|
| id | 파일 id |
| creator | 만든이 |
| Status Code | Description |
|---|---|
| 200 OK | 성공 |
| 401 Unauthorized | 파일 만든이가 아님 |
| 404 Not Found | id에 해당하는 파일이 없음 |
Example
"hello world"- POST /api/text/{creator}
"this is content"| Parameter | Description |
|---|---|
| creator | 만든이 |
| Request Body | 내용 |
| Status Code | Description |
|---|---|
| 200 OK | 성공 |
성공시 id 반환
Example
"1eb63bbbe01eeed093cb22bb8f5acdc3"- GET /api/file/{id}/{creator}
| Parameter | Description |
|---|---|
| id | 파일 id |
| creator | 만든이 |
| Status Code | Description |
|---|---|
| 200 OK | 성공 |
| 401 Unauthorized | 파일 만든이가 아님 |
| 404 Not Found | id에 해당하는 파일이 없음 |
- POST /api/file/{creator}
| Parameter | Description |
|---|---|
| creator | 만든이 |
| Request Body | MultipartFile |
| Status Code | Description |
|---|---|
| 200 OK | 성공 |
성공시 id 반환
Example
"1eb63bbbe01eeed093cb22bb8f5acdc3"