ΠΠ°Π½Π½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ RESTful API Π΄Π»Ρ ΡΠ΅ΡΠ²ΠΈΡΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π·Π°ΠΌΠ΅ΡΠΊΠ°ΠΌΠΈ, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Django REST Framework (DRF). API ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ ΠΈ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ JWT Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ, ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ, ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ Π·Π°ΠΌΠ΅ΡΠΎΠΊ.
- Python 3.8 ΠΈΠ»ΠΈ Π²ΡΡΠ΅
- pip
- Django 3.2 ΠΈΠ»ΠΈ Π²ΡΡΠ΅
- Django REST Framework
- djangorestframework-simplejwt Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ JWT
-
ΠΠ»ΠΎΠ½ΠΈΡΡΠΉΡΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ: bash git clone https://github.com/Π²Π°Ρ_ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ.git cd Π²Π°Ρ_ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ
-
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅: python -m venv venv source venv/bin/activate # ΠΠ»Ρ Windows ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ venv/Scripts/activate
-
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΈΠ· requirements.txt: pip install -r requirements.txt
-
ΠΠ°ΡΡΡΠΎΠΉΡΠ΅ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ :
Π ΡΠ°ΠΉΠ»Π΅ settings.py Π½Π°ΡΡΡΠΎΠΉΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ Π²Π°ΡΠ΅ΠΉ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, PostgreSQL, SQLite ΠΈ Ρ.Π΄.). Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΈΠ· .env, ΠΏΡΠΈΠΌΠ΅Ρ Π΅Π³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Π² env_example.py
-
ΠΡΠΈΠΌΠ΅Π½ΠΈΡΠ΅ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ: python manage.py migrate
-
ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΡΠ΅ΡΠ²Π΅Ρ: python manage.py runserver
POST /api/users/registration/
Π’Π΅Π»ΠΎ Π·Π°ΠΏΡΠΎΡΠ°: { "user": { "username": "user1", "email": "user1@user.user", "password": "qweasdzxc" } }
ΠΡΠ²Π΅Ρ: { { "user": { "email": "user1@user.user", "username": "user1", "token": "eyJ0eXAiOiJKV...." } } }
POST /api/users/login/
Π’Π΅Π»ΠΎ Π·Π°ΠΏΡΠΎΡΠ°: { "user": { "email": "email@email.email", "username": "admin", "password": "aasdasdasd" } }
ΠΡΠ²Π΅Ρ: { "user": { "email": "email@email.email", "username": "admin", "token": "eyJ0eXAiOiJKV1Q...." } }
PUT /api/user/update/
ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ: Authorization: Token access_token
Π’Π΅Π»ΠΎ Π·Π°ΠΏΡΠΎΡΠ°: { "user": { "username": "Mash", "email": "mash@user.user", "password": "asdasda12sdadasd" } }
ΠΡΠ²Π΅Ρ: { "user": { "email": "mash@user.user", "username": "Mash", "token": "eyJ0eXAiOiJK....." } }
POST /api/notes/create/
ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ: Authorization: Token access_token
Π’Π΅Π»ΠΎ Π·Π°ΠΏΡΠΎΡΠ°:
{ "title": "ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π·Π°ΠΌΠ΅ΡΠΊΠΈ", "content": "Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π·Π°ΠΌΠ΅ΡΠΊΠΈ" }
ΠΡΠ²Π΅Ρ: { "id": 1, "title": "ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π·Π°ΠΌΠ΅ΡΠΊΠΈ", "content": "Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π·Π°ΠΌΠ΅ΡΠΊΠΈ", "created_at": "2023-01-01T00:00:00Z", "updated_at": "2023-01-01T00:00:00Z" }
GET /api/notes/
ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ: Authorization: Token access_token
[ { "id": 1, "title": "ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π·Π°ΠΌΠ΅ΡΠΊΠΈ", "content": "Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π·Π°ΠΌΠ΅ΡΠΊΠΈ", "created_at": "2023-01-01T00:00:00Z", "updated_at": "2023-01-01T00:00:00Z" } ]
PUT /api/notes/int:pk/
ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ: Authorization: Token access_token
Π’Π΅Π»ΠΎ Π·Π°ΠΏΡΠΎΡΠ°:
{ "title": "ΠΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ", "content": "ΠΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅" }
ΠΡΠ²Π΅Ρ: { "id": 1, "title": "ΠΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ", "content": "ΠΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅", "created_at": "2023-01-01T00:00:00Z", "updated_at": "2023-01-02T00:00:00Z" }
DELETE /api/notes/int:pk/delete/
ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ: Authorization: Token access_token
ΠΡΠ²Π΅Ρ: