API Π΄Π»Ρ Yatube ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ ΡΠΎΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ Π·Π°ΠΏΠΈΡΠΈ, ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Π·Π°ΠΏΠΈΡΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ ΠΈΠ»ΠΈ ΠΎΡΠΏΠΈΡΡΠ²Π°ΡΡΡΡ ΠΎΡ Π°Π²ΡΠΎΡΠΎΠ².
Python, Django, DRF, JWT + Djoser
ΠΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΈ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π² Π½Π΅Π³ΠΎ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅:
git clone https://github.com/Alyona-safonova/api_final_yatube.git
cd yatube_api
CΠΎΠ·Π΄Π°ΡΡ ΠΈ Π°ΠΊΡΠΈΠ²ΠΈΡΠΎΠ²Π°ΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅: π
python3 -m venv venv
- ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Linux/macOS
source venv/bin/activate
- ΠΡΠ»ΠΈ Ρ Π²Π°Ρ windows
source venv/scripts/activate
python3 -m pip install --upgrade pip
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΈΠ· ΡΠ°ΠΉΠ»Π° requirements.txt:
pip install -r requirements.txt
ΠΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ:
python manage.py migrate
ΠΠ°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΎΠ΅ΠΊΡ:
python manage.py runserver
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π»Ρ Π½Π΅Π°Π²ΡΠΎΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ.
GET api/v1/posts/ - ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ
ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΉ.
ΠΡΠΈ ΡΠΊΠ°Π·Π°Π½ΠΈΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² limit ΠΈ offset Π²ΡΠ΄Π°ΡΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΏΠ°Π³ΠΈΠ½Π°ΡΠΈΠ΅ΠΉ
GET api/v1/posts/{id}/ - ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΠΎ id
GET api/v1/groups/ - ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ° Π΄ΠΎΡΡΡΠΏΠ½ΡΡ
ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²
GET api/v1/groups/{id}/ - ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π΅ ΠΏΠΎ id
GET api/v1/{post_id}/comments/ - ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ
ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² ΠΊ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ
GET api/v1/{post_id}/comments/{id}/ - ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΊ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΠΎ id
ΠΠ° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ½Π΄ΠΏΠΎΠΈΠ½ΡΠ° follow, Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΡΠΎΠ»ΡΠΊΠΎ Π°Π²ΡΠΎΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ.
api/v1/follow/ - ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΏΠΈΡΠΎΠΊ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
api/v1/follow/{id}/ - ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠΈ
ΠΠ²ΡΠΎΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΌΠΎΠ³ΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΠΎΡΡΡ, ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡ ΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π½Π° Π΄ΡΡΠ³ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ.
POST /api/v1/posts/ - ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ
Π² body { "text": "string", "image": "string", "group": 0 }
PUT /api/v1/posts/{id}/ - ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ
Π² body { "text": "string", "image": "string", "group": 0 }
PATCH /api/v1/posts/{id}/ - ΡΠ°ΡΡΠΈΡΠ½ΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ
Π² body { "text": "string", "image": "string", "group": 0 }
DEL /api/v1/posts/{id}/ - ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ
admin/ - ΠΏΠΎΡΠ»Π΅ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ, ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄ΠΈΠΌ Π² ΡΠ°Π·Π΄Π΅Π» Groups ΠΈ ΡΠΎΠ·Π΄Π°Π΅ΠΌ Π³ΡΡΠΏΠΏΡ
ΠΠΎΡΡΡΠΏ Π°Π²ΡΠΎΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΏΠΎ JWT-ΡΠΎΠΊΠ΅Π½Ρ
POST /api/v1/jwt/create/ - ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠΊΠ΅Π½Π°
{
"username": "string",
"password": "string"
}
POST /api/v1/jwt/refresh/ - ΠΎΠ±Π½ΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠΊΠ΅Π½Π°
POST /api/v1/jwt/verify/ - ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠΎΠΊΠ΅Π½Π°
Π’Π°ΠΊΠΆΠ΅ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠ°Π³ΠΈΠ½Π°ΡΠΈΡ(LimitOffsetPagination).