Π‘ΠΎΡΠΈΠ°Π»ΡΠ½Π°Ρ ΡΠ΅ΡΡ
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΡΠΎΠΌΡ ΠΏΡΠΎΠ΅ΠΊΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΠΎΡΡΡ, ΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΠΎΠ΄ ΠΏΠΎΡΡΠ°ΠΌΠΈ ΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π½Π° ΠΏΠΎΠ½ΡΠ°Π²ΠΈΠ²ΡΠΈΡ ΡΡ Π°Π²ΡΠΎΡΠΎΠ².
Python, Django, DRF, DRF-simplejwt
- ΠΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΈ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π² Π½Π΅Π³ΠΎ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅:
- Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΠΈ Π°ΠΊΡΠΈΠ²ΠΈΡΡΠΉΡΠ΅ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅:
ΠΠ»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Windows:
python -m venv venv
source venv/Scripts/activate
python -m pip install --upgrade pip
- Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΈΠ· ΡΠ°ΠΉΠ»Π° requirements.txt
pip install -r requirements.txt
- ΠΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Ρ ΡΠ°ΠΉΠ»ΠΎΠΌ manage.py Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ: ΠΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ:
python manage.py migrate
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΡΠΏΠ΅Ρ-ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ:
python manage.py createsuperuser
ΠΠ°ΠΏΡΡΠΊ ΠΏΡΠΎΠ΅ΠΊΡΠ°:
python manage.py runserver
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π»Ρ Π½Π΅Π°Π²ΡΠΎΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ.
api/v1/posts/ - ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ° Π²ΡΠ΅Ρ
ΠΏΠΎΡΡΠΎΠ²
api/v1/posts/{id}/ - ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΡΠ°
api/v1/groups/ - ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ° Π²ΡΠ΅Ρ
Π³ΡΡΠΏΠΏ
api/v1/groups/{id}/ - ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π³ΡΡΠΏΠΏΡ
api/v1/{post_id}/comments/ - ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ° Π²ΡΠ΅Ρ
ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² ΠΏΠΎΠ΄ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΠΏΠΎΡΡΠΎΠΌ
api/v1/{post_id}/comments/{id}/ - ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡ
ΠΠ° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ½Π΄ΠΏΠΎΠΈΠ½ΡΠ° follow Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΡΠΎΠ»ΡΠΊΠΎ Π°Π²ΡΠΎΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ.
api/v1/follow/ - ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΏΠΈΡΠΎΠΊ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
api/v1/follow/{id}/ - ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠΈ
Π users Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Π°Π΄ΠΌΠΈΠ½Π°:
api/v1/users/ - ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ
api/v1/users/{id}/ - ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
- ΠΠ²ΡΠΎΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΌΠΎΠ³ΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΠΎΡΡΡ, ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡ ΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π½Π° Π΄ΡΡΠ³ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ.
- ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΌΠΎΠ³ΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ(ΡΠ΄Π°Π»ΡΡΡ) ΠΊΠΎΠ½ΡΠ΅Π½Ρ, Π°Π²ΡΠΎΡΠΎΠΌ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡΡΡΡ. Π’Π°ΠΊ ΠΆΠ΅ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΏΡΠΈΡΡΡΡΠ²ΡΠ΅Ρ ΠΏΠ°Π³ΠΈΠ½Π°ΡΠΈΡ(LimitOffsetPagination), ΠΏΠΎΠΈΡΠΊ ΠΈ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ°, ΠΏΡΠΈΠΌΠ΅ΡΡ Π½ΠΈΠΆΠ΅
api/v1/posts/?limit=10&offset=0 - ΠΠ°Π³ΠΈΠ½Π°ΡΠΈΡ Π½Π° 10 ΠΏΠΎΡΡΠΎΠ², Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ
api/v1/posts/?search=your_search - ΠΠΎΠΈΡΠΊ Π² ΡΠ΅ΠΊΡΡΠ΅, ΠΏΠΎΡΡΠΎΠ² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π³ΡΡΠΏΠΏΡ
api/v1/posts/?ordering=-pub_date - ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΏΠΎ Π΄Π°ΡΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠΎΡΡΠΎΠ²(ΡΠ½Π°ΡΠ°Π»ΠΎ Π½ΠΎΠ²ΡΠ΅)
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ² ΠΏΡΠΎΠ΅ΠΊΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π· Π°Π΄ΠΌΠΈΠ½ ΠΏΠ°Π½Π΅Π»Ρ Django:
admin/ - ΠΏΠΎΡΠ»Π΅ Π°Π²ΡΠΎΡΠ°Π·ΠΈΠ°ΡΠΈΠΈ, ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π² ΡΠ°Π·Π΄Π΅Π» "ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π°" ΠΈ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠΈ
ΠΠΎΡΡΡΠΏ Π°Π²ΡΠΎΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΏΠΎ jwt-ΡΠΎΠΊΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΠ² POST Π·Π°ΠΏΡΠΎΡ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ:
api/v1/jwt/create/
ΠΠ΅ΡΠ΅Π΄Π°Π² Π² body Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ:
{
"username": "your_nickname",
"password": "your_password"
}
ΠΠΎΠ»ΡΡΠΈΠ² ΡΠΎΠΊΠ΅Π½ Π΅Π³ΠΎ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² headers, ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π²Π°ΠΌ Π±ΡΠ΄Ρ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°:
Authorization: Bearer {your_token}
ΠΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΡΠΎΠΊΠ΅Π½ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ΠΌ ΡΠ½Π΄ΠΏΠΎΠΈΠ½ΡΠ°ΠΌ:
api/v1/jwt/refresh/ - ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠΊΠ΅Π½Π°
api/v1/jwt/verify/ - ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠΎΠΊΠ΅Π½Π°
GerG