Skip to content

🌱The Sharing Items microservices backend application.

Notifications You must be signed in to change notification settings

DembitskaiaAA/java-shareit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

58 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

БСрвис совмСстного использования Π²Π΅Ρ‰Π΅ΠΉ

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡˆΠ΅Ρ€ΠΈΠ½Π³ позволяСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ ΠΈΡΠΊΠ°Ρ‚ΡŒ, Π²Ρ‹ΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ Π±Ρ€Π°Ρ‚ΡŒ Π² Π°Ρ€Π΅Π½Π΄Ρƒ Π½Π° врСмя Π²Π΅Ρ‰ΠΈ для пользования, ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΎΡ‚Π·Ρ‹Π²Ρ‹, Π΄Π΅Π»Π°Ρ‚ΡŒ запросы Π½Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²Π΅Ρ‰Π΅ΠΉ.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Π΄Π²Π° микросСрвиса:

  1. Основной β€” содСрТит всё Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°.
  2. Π“Π΅ΠΉΡ‚Π²Π΅ΠΉ-шлюз β€” ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡŽ входящих запросов, Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΡƒΡ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Π΅ запросы.

Основной микросСрвис Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ возмоТности для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ:

  1. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²Π΅Ρ‰ΠΈ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π΅ΠΌ для сдачи Π² Π°Ρ€Π΅Π½Π΄Ρƒ (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΠΎ запросу ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ Ρ‚Π°ΠΊΠΎΠΉ Π²Π΅Ρ‰ΠΈ, Ρ‚Π°ΠΊ ΠΈ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ).
  2. Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π²Π΅Ρ‰ΠΈ Π΅Π΅ Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π΅ΠΌ (ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ добавившим эту Π²Π΅Ρ‰ΡŒ).
  3. ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π²Π΅Ρ‰ΠΈ Π»ΡŽΠ±Ρ‹ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ.
  4. ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π΅ΠΌ списка всСх Π΅Π³ΠΎ Π²Π΅Ρ‰Π΅ΠΉ.
  5. Поиск доступных для Π°Ρ€Π΅Π½Π΄Ρ‹ Π²Π΅Ρ‰Π΅ΠΉ (ΠΏΠΎ тСксту).
  6. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ запроса Π½Π° Π±Ρ€ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π±Ρ€Π°Ρ‚ΡŒ Π²Π΅Ρ‰ΠΈ Π² Π°Ρ€Π΅Π½Π΄Ρƒ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π΄Π°Ρ‚Ρ‹) Π»ΡŽΠ±Ρ‹ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ.
  7. ΠŸΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ запроса Π½Π° Π±Ρ€ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π΅ΠΌ Π²Π΅Ρ‰ΠΈ.
  8. ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ Π±Ρ€ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π°Π²Ρ‚ΠΎΡ€ΠΎΠΌ запроса ΠΈΠ»ΠΈ Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π΅ΠΌ Π²Π΅Ρ‰ΠΈ.
  9. ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ списка Π±Ρ€ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΉ Π°Π²Ρ‚ΠΎΡ€ΠΎΠΌ запроса (Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ ΠΏΠΎ статусу, сортировка ΠΎΡ‚ Π½ΠΎΠ²Ρ‹Ρ… ΠΊ старым).
  10. ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ списка Π±Ρ€ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΉ для всСх Π²Π΅Ρ‰Π΅ΠΉ Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π°.
  11. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΎΡ‚Π·Ρ‹Π²Ρ‹ Π² Ρ„ΠΎΡ€ΠΌΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² Π½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π²Π΅Ρ‰ΡŒ ΠΏΠΎ ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠΈ Π°Ρ€Π΅Π½Π΄Ρ‹.
  12. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.
  13. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ запроса Π²Π΅Ρ‰ΠΈ. НапримСр, Ссли трСбуСмая Π²Π΅Ρ‰ΡŒ отсутствуСт Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅.
  14. ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ списка всСх запросов Π°Π²Ρ‚ΠΎΡ€ΠΎΠΌ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΎΠ± ΠΎΡ‚Π²Π΅Ρ‚Π°Ρ… Π½Π° Π½ΠΈΡ… (сортировка ΠΎΡ‚ Π½ΠΎΠ²Ρ‹Ρ… ΠΊ старым).
  15. ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ списка запросов Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ (сортировка ΠΎΡ‚ Π½ΠΎΠ²Ρ‹Ρ… ΠΊ старым).
  16. ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π»ΡŽΠ±Ρ‹ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ запросС Π²Π΅Ρ‰ΠΈ вмСстС с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΎΠ± ΠΎΡ‚Π²Π΅Ρ‚Π°Ρ… Π½Π° Π½Π΅Π³ΠΎ.

🧩 Π‘Ρ‚Π΅ΠΊ-Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ ΠΈ ΠΎΠΏΡ‹Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ 🧩

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Π² своСй основС Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Java Core, Spring Boot Framework ΠΈ возмоТности развСртывания Π² сборкС ΠΎΡ‚ Maven Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°Ρ… с использованиСм Docker. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° прСдставляСт собой микросСрвис с Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ REST API. ΠœΠΈΠΊΡ€ΠΎΡΠ΅Ρ€Π²ΠΈΡ состоит ΠΈΠ· Π΄Π²ΡƒΡ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ:

  1. ΠΌΠΎΠ΄ΡƒΠ»ΡŒ shareit-server ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Π±Π°Π·ΠΎΠ²ΡƒΡŽ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ бизнСс-Π»ΠΎΠ³ΠΈΠΊΡƒ, ядро прилоТСния;
  2. ΠΌΠΎΠ΄ΡƒΠ»ΡŒ shareit-gateway слуТит Π² качСствС шлюза прилоТСния для Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ входящих запросов.

Для удобства дальнСйшСй Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ прилоТСния Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ DTO Π²Ρ‹Π΄Π΅Π»Π΅Π½Ρ‹ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΡΡƒΠ±ΠΌΠΎΠ΄ΡƒΠ»ΡŒ api: shareit-gateway. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² сСрвисС статистики для обращСния ΠΊ слою бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΈ, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, построСнный Π½Π° Π‘ΠΏΡ€ΠΈΠ½Π³ΠΎΠ²ΠΎΠΌ RestTemplate.


БистСмныС трСбования

Π’ Π΄Π°Π½Π½ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ прСдставлСн бэкСнд прилоТСния. Π Π°Π±ΠΎΡ‚ΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ прилоТСния протСстирована с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Ρ… ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… тСстов. Π’Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° протСстирована ΠΏΠΎ WEB API с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Postman-тСстов.

ВСсты располоТСны здСсь:

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ:

  • установлСнный JDK вСрсии 11,
  • сборка с использованиСм Maven,
  • установлСнный Docker.

Π£ΠΏΠ°ΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

  1. mvn clean install (сборка)
  2. docker-compose up (ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΠΈ запуск)