ΠΡΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡ β REST API ΡΠ΅ΡΠ²ΠΈΡ Π½Π° Spring Boot Ρ JWT Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ. Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΈ Π»ΠΎΠ³ΠΈΠ½ Ρ Π²ΡΠ΄Π°ΡΠ΅ΠΉ JWT. ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΈΠΌΠ΅ΡΡ ΡΡΠΈ ΡΠΎΠ»ΠΈ ΡΠΎ ΡΡΡΠΎΠ³ΠΎΠΉ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΠ΅ΠΉ Ρ ΡΠ°Π·Π³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ Π΄ΠΎΡΡΡΠΏΠ°:
- ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ β ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ ΠΏΠΎΡΡΡ.
- ΠΠΎΠ΄Π΅ΡΠ°ΡΠΎΡ β ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ ΠΏΠΎΡΡΡ ΠΈ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΏΠΎΡΡΡ Π½Π° ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΠΈ.
- ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ β ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ²ΡΡΠ°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π΄ΠΎ ΠΌΠΎΠ΄Π΅ΡΠ°ΡΠΎΡΠΎΠ² ΠΈ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ Π²ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ.
- Π Π΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ
- ΠΠΎΠ³ΠΈΠ½ Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠ΅ΠΉ JWT
- ΠΠ°Π»ΠΈΠ΄Π°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ (ΡΠΎΡΠΌΠ°Ρ Π»ΠΎΠ³ΠΈΠ½Π°, ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠ°ΡΠΎΠ»Ρ)
- Π ΠΎΠ»ΠΈ Ρ ΡΠ°Π·Π³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ Π΄ΠΎΡΡΡΠΏΠ°
- Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠ»ΡΠΌΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°ΠΌΠΈ
- Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΡΠ°ΠΌΠΈ ΠΌΠΎΠ΄Π΅ΡΠ°ΡΠΎΡΠ°ΠΌΠΈ
- Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π°
- Java 17
- Spring Boot
- Spring Security
- JPA / Hibernate
- Postgres
- JUnit / Mockito Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ
- ΠΠ»ΠΎΠ½ΠΈΡΡΠΉΡΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ
- ΠΠ°ΡΡΡΠΎΠΉΡΠ΅
application.properties
(ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΠ, JWT-ΡΠ΅ΠΊΡΠ΅Ρ ΠΈ Ρ.Π΄.) - ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
mvnw spring-boot:run
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Postman ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ API
- Π Π΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ:
POST /auth/register
- ΠΠΎΠ³ΠΈΠ½:
POST /auth/login
- ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ° ΠΏΠΎΡΡΠΎΠ²:
GET /posts
- Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΡΡΠ° (ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ):
POST /posts/suggest
- ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ° ΠΏΠΎΡΡΠΎΠ² Π½Π° ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΠΈ (ΠΌΠΎΠ΄Π΅ΡΠ°ΡΠΎΡ):
GET /posts/pending
- ΠΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ ΠΏΠΎΡΡΠ° (ΠΌΠΎΠ΄Π΅ΡΠ°ΡΠΎΡ):
PATCH /posts/publish/{postId}
- ΠΠΎΠ²ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ (Π°Π΄ΠΌΠΈΠ½):
PATCH /admin/promote/{userId}
- ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ (Π°Π΄ΠΌΠΈΠ½):
GET /admin/users
ΠΡΠΎΠ΅ΠΊΡ ΠΏΠΎΠΊΡΡΡ ΡΠ½ΠΈΡ ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΌΠΈ ΡΠ΅ΡΡΠ°ΠΌΠΈ Π΄Π»Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΈ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ².