You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content/projects/cloud-file-storage.md
+27-10Lines changed: 27 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -51,9 +51,10 @@ weight = 6
51
51
52
52
## REST API
53
53
54
-
- Архитектурный стиль - RPC для авторизации и регистрации, REST для всего остального
55
-
- Механизм авторизации - сессии
56
-
- Формат запросов и ответов - JSON, кроме скачивания и аплоада файлов
54
+
- Архитектурный стиль - RPC для авторизации и регистрации, REST для всего остального.
55
+
- Все эндпоинты существуют под общим путём `/api`. Пути ниже относительны его, пример - `/api/auth/sign-up`.
56
+
- Механизм авторизации - сессии.
57
+
- Формат запросов и ответов - JSON, кроме скачивания и аплоада файлов.
57
58
58
59
### Ответ в случае ошибки
59
60
@@ -389,19 +390,35 @@ GET параметр `path` - путь к папке, в которую мы з
389
390
- "Переименовывать" папки. Насколько знаю в S3 нет такой операции, переименование папки по сути представляет собой создание папки под новым именем и перенос туда файлов
390
391
- Удалять файлы
391
392
392
-
## Upload файлов
393
+
## Фронтенд
393
394
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/).
395
396
396
-
На уровне HTTP, передача файлов осуществляется с помощью `multipart/form-data`.
397
+
Демо фронтенда с мокнутным API (фронтенд отображает "фейковые" данные) - [https://zhukovsd.github.io/cloud-storage-frontend/files/](https://zhukovsd.github.io/cloud-storage-frontend/files/).
397
398
398
-
Со стороны Spring Boot необходимо будет реализовать контроллер(ы) для обработки загруженных файлов. Важно иметь в виду, что по-умолчанию лимит на загрузку файлов в Spring Boot равен 10 мегабайтам, но его можно увеличить.
- Формы регистрации и авторизации доступны через пункт "Выход" в меню заголовка [главной страницы](https://zhukovsd.github.io/cloud-storage-frontend/files/)
401
404
402
-
File input может быть использован для загрузки либо отдельных файлов, либо папок (если у input установлен атрибут [webkitdirectory](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#webkitdirectory)), но не одновременно.
405
+
### Интеграция фронтенда
403
406
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
0 commit comments