/RestGallery

FastAPI+Unity

Primary LanguageC#

RestGallery - Unity + FastAPI 기반 RESTful 이미지 갤러리

풀사이클 이미지 관리 솔루션
사용자가 기기 내 이미지를 선택하고 서버로 업로드한 뒤,
갤러리 형태로 불러와 확인 및 삭제할 수 있는 Unity 기반 RESTful 프로젝트입니다.


개발 개요

구분 내용
개발기간 2024.12 ~ 2025.01
개발환경 Unity 2022.3 LTS / Python 3.11 (FastAPI)
서버 실행환경 Uvicorn / File I/O / UUID 기반 파일관리
주요 기능 이미지 업로드 · 목록 조회 · 이미지 보기 · 삭제 기능
플랫폼 지원 Windows / Mac / Android / iOS

프로젝트 개요

RestGallery는 Unity에서 FastAPI 서버와 직접 RESTful 통신을 수행하여
이미지 파일을 업로드하고, 서버에서 제공하는 JSON 데이터를 기반으로
UI 버튼을 자동 생성해 갤러리 형태로 이미지를 표시하는 프로젝트입니다.


주요 기능

기능 설명
1. 이미지 선택 (FilePicker) PC: StandaloneFileBrowser, 모바일: NativeGallery로 파일 선택
2. 이미지 업로드 (ImageUploader) UnityWebRequest.Post로 서버 /api/images 업로드, 성공 시 자동 새로고침
3. 이미지 목록 조회 (GalleryLoader) 서버 /api/images 응답(JSON)을 받아 ScrollView 내 버튼 동적 생성
4. 이미지 표시 및 삭제 버튼 클릭 → 이미지 표시, 삭제 버튼 → 서버 및 UI에서 동시 제거
5. FastAPI 서버 이미지 업로드, 다운로드, 삭제 API 제공 (/api/images, /api/files/{filename})

시스템 구조도

[사용자 기기]
     ↓
이미지 선택 (FilePicker)
     ↓
UnityWebRequest POST
     ↓
[FastAPI 서버] - 이미지 저장(storage/)
     ↓
UnityWebRequest GET
     ↓
ScrollView UI 목록 생성 및 표시

코드 구성

RestGallery/
├── Unity/
│   ├── FilePicker.cs      # 플랫폼별 이미지 파일 선택
│   ├── ImageUploader.cs   # 업로드 및 갤러리 새로고침
│   └── GalleryLoader.cs   # 목록, 삭제, UI 표시 관리
└── Server/
    └── main.py            # FastAPI 서버 (업로드/조회/삭제)

실행 화면


1️⃣ 서버 구동 (FastAPI)      2️⃣ 파일 선택 및 업로드      3️⃣ 업로드 후 JSON 저장 확인


4️⃣ 등록된 이미지 목록 로드      5️⃣ 리스트 선택 시 이미지 표시      6️⃣ 이미지 삭제 기능

---

실행 방법

FastAPI 서버 실행

uvicorn main:app --reload

Unity 실행

  1. FilePicker, ImageUploader, GalleryLoader 스크립트를 Scene 내에 추가
  2. ScrollView의 Content 영역과 RawImage 연결
  3. “+” 버튼 클릭 시 이미지 선택 → 업로드 → 목록 표시
  4. 버튼 클릭 시 이미지 표시 / 삭제 버튼 클릭 시 삭제

기술 요약

영역 기술 설명
클라이언트 Unity, C#, UnityWebRequest REST API 통신, UI 동적 생성
서버 FastAPI, Python, UUID, File I/O 이미지 파일 관리 및 JSON 응답
데이터 포맷 JSON 업로드, 조회, 삭제 시 일관된 데이터 포맷
라이브러리 Newtonsoft.Json, NativeGallery JSON 직렬화 및 모바일 갤러리 접근

개선 및 확장 방향

  • AWS S3 또는 Firebase Storage로 이미지 저장소 확장
  • SQLite 또는 MongoDB를 통한 DB 기반 메타데이터 관리
  • 업로드 시 썸네일 생성 기능 추가
  • 사용자 계정별 이미지 관리 시스템으로 확장 가능

결과

✅ Unity와 FastAPI 간 RESTful 통신 구조 완전 구현 ✅ 업로드 → 조회 → 삭제까지의 전체 비동기 사이클 완성 ✅ 멀티 플랫폼 대응 및 동적 UI 자동화 성공