Skip to content

Commit 46c598b

Browse files
committed
cloud-file-storage: frontend integration
1 parent 967ede8 commit 46c598b

File tree

1 file changed

+27
-10
lines changed

1 file changed

+27
-10
lines changed

content/projects/cloud-file-storage.md

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,10 @@ weight = 6
5151

5252
## REST API
5353

54-
- Архитектурный стиль - RPC для авторизации и регистрации, REST для всего остального
55-
- Механизм авторизации - сессии
56-
- Формат запросов и ответов - JSON, кроме скачивания и аплоада файлов
54+
- Архитектурный стиль - RPC для авторизации и регистрации, REST для всего остального.
55+
- Все эндпоинты существуют под общим путём `/api`. Пути ниже относительны его, пример - `/api/auth/sign-up`.
56+
- Механизм авторизации - сессии.
57+
- Формат запросов и ответов - JSON, кроме скачивания и аплоада файлов.
5758

5859
### Ответ в случае ошибки
5960

@@ -389,19 +390,35 @@ GET параметр `path` - путь к папке, в которую мы з
389390
- "Переименовывать" папки. Насколько знаю в S3 нет такой операции, переименование папки по сути представляет собой создание папки под новым именем и перенос туда файлов
390391
- Удалять файлы
391392

392-
## Upload файлов
393+
## Фронтенд
393394

394-
Для загрузки файлов необходимо воспользоваться HTML file input - [https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file). Распространённый подход оформить это в виде зоны, на которую можно перетягивать файлы из проводника, пример - [https://codepen.io/dcode-software/pen/xxwpLQo](https://codepen.io/dcode-software/pen/xxwpLQo).
395+
Для проекта написан одностраничный фронтенд на React, спасибо Андрею [@MrShoffen](https://t.me/MrShoffen) - [https://github.com/zhukovsd/cloud-storage-frontend/](https://github.com/zhukovsd/cloud-storage-frontend/).
395396

396-
На уровне HTTP, передача файлов осуществляется с помощью `multipart/form-data`.
397+
Демо фронтенда с мокнутным API (фронтенд отображает "фейковые" данные) - [https://zhukovsd.github.io/cloud-storage-frontend/files/](https://zhukovsd.github.io/cloud-storage-frontend/files/).
397398

398-
Со стороны Spring Boot необходимо будет реализовать контроллер(ы) для обработки загруженных файлов. Важно иметь в виду, что по-умолчанию лимит на загрузку файлов в Spring Boot равен 10 мегабайтам, но его можно увеличить.
399+
Основные страницы:
399400

400-
### Загрузка папок
401+
- Содержимое [корневой папки](https://zhukovsd.github.io/cloud-storage-frontend/files/)
402+
- Содержимое [вложенной папки](https://zhukovsd.github.io/cloud-storage-frontend/files/mocked_folder1/)
403+
- Формы регистрации и авторизации доступны через пункт "Выход" в меню заголовка [главной страницы](https://zhukovsd.github.io/cloud-storage-frontend/files/)
401404

402-
File input может быть использован для загрузки либо отдельных файлов, либо папок (если у input установлен атрибут [webkitdirectory](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#webkitdirectory)), но не одновременно.
405+
### Интеграция фронтенда
403406

404-
Получается, что необходимо иметь 2 input'а - для файлов, и для папок. Возможно, существуют Javascript библиотеки, которые решают этот вопрос и реализуют единый input для обоих случаев.
407+
Собранное React приложение представляет собой набор статических файлов - [https://github.com/zhukovsd/cloud-storage-frontend/tree/master/dist](https://github.com/zhukovsd/cloud-storage-frontend/tree/master/dist).
408+
409+
Самый простой способ интеграции - добавить эти файлы в Spring Boot проекта.
410+
411+
Необходимо, чтобы точка входа в React приложение (`index.html`) была доступна по корневому адресу в запущенном Spring Boot сервисе. Остальные файлы должны быть доступны по соответствующим относительным путям.
412+
413+
Эндпоинты API при этом будут существовать под общим путём `/api`. Пример - `/api/auth/sign-up`.
414+
415+
#### Альтернативный способ интеграции - Docker
416+
417+
В случае, если есть желание отделить фронтенд от бека, можно раздавать статику React приложения через запущенный в Docker контейнере Nginx:
418+
419+
1. В файле [public/config.js](https://github.com/zhukovsd/cloud-storage-frontend/blob/master/public/config.js) необходимо прописать адрес API бэкенда. Пример - `http://localhost:8080`
420+
2. Пересобрать Docker образ из Dockerfile
421+
3. Запустить контейнер вручную или через Docker Compose
405422

406423
## Тесты
407424

0 commit comments

Comments
 (0)