YaTube API ΡΡΠΎ RESTful API, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΡΡΡ, ΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΊ ΠΎΡΠ·ΡΠ²Π°ΠΌ. ΠΠΎΠ΄ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π½Π° Π»ΡΠ±ΠΈΠΌΡΡ Π°Π²ΡΠΎΡΠΎΠ². Π ΠΎΡΠ½ΠΎΠ²Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π»Π΅ΠΆΠ°Ρ Django ΠΈ Django REST Framework.
- ΠΠΈΡΠΈΡΠ΅ ΡΠ²ΠΎΠΈ ΠΏΠΎΡΡΡ.
- ΠΠ²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎ ΡΠΎΠΊΠ΅Π½Ρ.
- ΠΠ»Ρ Π°Π²ΡΠΎΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠΈ Π½Π° Π°Π²ΡΠΎΡΠ° ΠΏΠΎΡΡΠ°.
- Django - ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ Π²ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Π΄Π»Ρ Π±ΡΡΡΡΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π²Π΅Π±-ΡΠ΅ΡΠ²ΠΈΡΠΎΠ².
- Django REST Framework - ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ, ΡΠ°ΡΡΠΈΡΡΡΡΠΈΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Django ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ Π±ΡΡΡΡΠΎ ΠΏΠΈΡΠ°ΡΡ RESTful API Π΄Π»Ρ Django-ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ².
ΠΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠ΅ YaTube API ΡΡΠΎ ΠΠ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅ΠΌ Π½Π° GitHub.
ΠΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΈ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π² Π½Π΅Π³ΠΎ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅:
git clone https://github.com/s1ntecs/api_final_yatube.git
cd api_final_yatube
CΠΎΠ·Π΄Π°ΡΡ ΠΈ Π°ΠΊΡΠΈΠ²ΠΈΡΠΎΠ²Π°ΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅:
python3 -m venv env
source env/bin/activate
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΈΠ· ΡΠ°ΠΉΠ»Π° requirements.txt:
python3 -m pip install --upgrade pip
pip install -r requirements.txt
ΠΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ:
python3 manage.py migrate
ΠΠ°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΎΠ΅ΠΊΡ:
python3 manage.py runserver
ΠΡΠΈΠΌΠ΅ΡΡ API Π·Π°ΠΏΡΠΎΡΠΎΠ²: .../api/v1/posts/ .../api/v1/posts/{id}/ ==> PATCH, DELETE GET ΠΡΠ²Π΅Ρ: { "id": 0, "author": "string", "text": "string", "pub_date": "2019-08-24T14:15:22Z", "image": "string", "group": 0 } POST: { "text": "string", "image": "string", "group": 0 } ΠΡΠ²Π΅Ρ: { "id": 0, "author": "string", "text": "string", "pub_date": "2019-08-24T14:15:22Z", "image": "string", "group": 0 }
.../api/v1/posts/{post_id}/comments/ .../api/v1/posts/{post_id}/comments/{id}/ => PUT, PATCH. DELETE GET ΠΡΠ²Π΅Ρ: [ { "id": 0, "author": "string", "text": "string", "created": "2019-08-24T14:15:22Z", "post": 0 } ] POST { "text": "string" } ΠΡΠ²Π΅Ρ: [ { "id": 0, "author": "string", "text": "string", "created": "2019-08-24T14:15:22Z", "post": 0 } ]
.../api/v1/groups/ .../api/v1/groups/{id}/ GET ΠΡΠ²Π΅Ρ: [ { "id": 0, "title": "string", "slug": "string", "description": "string" } ]
.../api/v1/follow/ GET ΠΡΠ²Π΅Ρ: [ { "user": "string", "following": "string" } ] POST { "following": "string" } ΠΡΠ²Π΅Ρ: { "user": "string", "following": "string" }
ΠΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΎ JWT-ΡΠΎΠΊΠ΅Π½Ρ:
.../api/v1/jwt/refresh/ ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ JWT-ΡΠΎΠΊΠ΅Π½Π°. .../api/v1/jwt/create/ ΠΠ»Ρ ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΡ JWT-ΡΠΎΠΊΠ΅Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ POST Π·Π°ΠΏΡΠΎΡΠ°: { "username": "string", "password": "string" }
Π‘ΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ ΡΠ½ΠΏΠΎΠΈΠ½ΡΠΎΠ² ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π² Π΄ΠΎΠΊΡΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ: https://djoser.readthedocs.io/en/latest/getting_started.html#available-endpoints