Skip to content

367300/file-api-server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

file-api-server

file-api-server — это легковесный API-сервер на Go для обмена файлами между клиентами. Проект позволяет безопасно загружать и скачивать файлы через HTTP-интерфейс с использованием JWT-аутентификации.

Разработан был с целью быстрого прототипирования обмена файлами и некоторых идей в приложении Матрешка Мессенджер (https://www.mtrshk.online/) (Google Play)


🚀 Быстрый старт

1. Клонирование репозитория

git clone https://github.com/367300/file-api-server.git
cd file-api-server

2. Запуск через Docker

Сборка и запуск контейнера:

npm run docker:init
  • Сервер будет доступен по адресу: http://localhost:8085
  • Файлы по умолчанию сохраняются в директории /images/ внутри контейнера.

Остановка и удаление контейнера:

npm run docker:stop
npm run docker:rm

3. Локальный запуск (без Docker)

Требования:

  • Go >= 1.22

Сборка и запуск:

go build -o file-api-serverd ./cmd/server/main.go
./file-api-serverd -addr=localhost:8085 -pathfiles=./uploads/

📦 Основные эндпоинты

  • POST /upload — загрузка файла (требуется JWT в заголовке Authorization)
  • GET /get/<путь_к_файлу> — скачивание файла

Пример загрузки файла (curl):

curl -X POST http://localhost:8085/upload \
  -H "Authorization: Bearer <ваш_JWT>" \
  -F "file=@example.png"

Пример скачивания файла:

curl -O http://localhost:8085/get/uploads/example.png

🔒 Аутентификация

Для загрузки файлов требуется JWT-токен. Токен должен быть передан в заголовке:

Authorization: Bearer <ваш_JWT>

Секрет для подписи токена по умолчанию: your-256-bit-secret (см. main.go, переменная secretKey).


⚙️ Особенности

  • Простая настройка адреса и директории хранения файлов через параметры запуска.
  • Автоматический выбор свободного порта при конфликте.
  • Все загруженные файлы доступны по прямой ссылке.
  • Минимальные зависимости, быстрый старт.

🛠️ Переменные запуска

  • -addr — адрес и порт сервера (например, localhost:8085)
  • -pathfiles — путь для хранения файлов (например, ./uploads/)

Если параметры не указаны, сервер запросит их интерактивно.


📝 Лицензия

Проект распространяется под лицензией Apache-2.0. Подробнее см. файл LICENSE.

About

api server on go for file sharing from the client side

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors