REST API - Π΄Π»Ρ ΡΠ΅ΡΠ²ΠΈΡΠ° Π·Π½Π°ΠΊΠΎΠΌΡΡΠ².
ΠΠ°Π½Π½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, ΠΈ ΡΡΠ°Π²ΠΈΡΡ ΠΈΠΌ ΡΠΈΠΌΠΏΠ°ΡΠΈΡ. ΠΡΠΈ Π²Π·Π°ΠΈΠΌΠ½ΠΎΠΉ ΡΠΈΠΌΠΏΠ°ΡΠΈΠΈ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΎΠ± ΡΡΠΎΠΌ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΡΡΡ.
Python, Django, DRF, DRF-Simple JWT, Django-filter, requests, beautifulsoup
- ΠΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΈ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π² Π½Π΅Π³ΠΎ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅:
- Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΠΈ Π°ΠΊΡΠΈΠ²ΠΈΡΡΠΉΡΠ΅ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅:
python3 -m venv venv
ΠΠ»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ linux/Mac:
source venv/bin/activate
ΠΠ»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Windows:
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 collectstatic
Π’Π΅ΡΡΠΎΠ²ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ:
python manage.py load_users
ΠΠ°ΠΏΡΡΠΊ ΠΏΡΠΎΠ΅ΠΊΡΠ°:
python manage.py runserver
Π ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ ΠΏΠ°ΡΡΠ΅Ρ Π΄Π»Ρ ΡΠ°ΠΉΡΠ° https://www.citilink.ru (ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ ΡΠΎΠ²Π°ΡΠ°, ΡΠ΅Π½Π° ΡΠΎΠ²Π°ΡΠ°, ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅) Π§ΡΠΎΠ±Ρ ΠΈΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ 3 ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Π² ΠΌΠ΅Π½Π΅Π΄ΠΆΠΌΠ΅Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ. url_category, title_category, slug_category
python manage.py https://www.citilink.ru/catalog/setevye-hranilischa-nas/ 'Π‘Π΅ΡΠ΅Π²ΡΠ΅ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° NAS' setevye-hranilischa-nas
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠΉ ΠΊΠΎΠΌΠΌΠ°Π½Π΄Ρ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½Π° ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ 'Π‘Π΅ΡΠ΅Π²ΡΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° NAS' ΡΠΎ ΡΠ»Π°Π³ΠΎΠΌ 'setevye-hranilischa-nas' ΠΈ Π² Π΄Π°Π½Π½ΡΡ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ Π±ΡΠ΄ΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ ΡΠΎΠ²Π°ΡΡ.
ΠΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ.
api/products/setevye-hranilischa-nas/
ΠΠΎΡΡΡΠΏΠ½Ρ Π²ΡΠ΅ΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ.
api/clients/create/ - ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ,
ΠΠΎΡΡΡΠΏ Π°Π²ΡΠΎΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ.
api/clients/token/ - ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΎΠΊΠ΅Π½,
api/clients/token/refresh/ - ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠΊΠ΅Π½Π°,
api/list/ - ΠΏΡΠΎΡΠΌΠΎΡΡ Π΄ΡΡΠ³ΠΈΡ
ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ,
api/clients/{user_id}/match/ - ΠΎΡΠ΅Π½ΠΊΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
api/clients/get_geolocation/ - ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π³Π΅ΠΎΠ»ΠΎΠΊΠ°ΡΠΈΡ ΠΏΠΎ IP,
api/clients/set_geolocation/ - ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ Π·Π°Π΄Π°Π½Π½ΡΡ Π³Π΅ΠΎΠ»ΠΎΠΊΠ°ΡΠΈΡ,
Π’Π°ΠΊ ΠΆΠ΅ Π² ΡΠ΅ΡΠ²ΠΈΡΠ΅ Π΅ΡΡΡ ΡΠΎΠ²Π°ΡΡ ΠΈ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ.
api/category/ - Π²ΡΠ΅ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ
api/products/{category_slug}/ - ΡΠΎΠ²Π°ΡΡ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ
Π’Π°ΠΊ ΠΆΠ΅ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΏΡΠΈΡΡΡΡΠ²ΡΠ΅Ρ ΠΏΠ°Π³ΠΈΠ½Π°ΡΠΈΡ(LimitOffsetPagination), ΠΏΠΎΠΈΡΠΊ, ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΡ ΠΈ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ°, ΠΏΡΠΈΠΌΠ΅ΡΡ Π½ΠΈΠΆΠ΅
api/list/?limit=10&offset=0 - ΠΠ°Π³ΠΈΠ½Π°ΡΠΈΡ
api/list/?search=your_search - ΠΠΎΠΈΡΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
api/list/?ordering=first_name - ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ(Π°Π»ΡΠΎΠ²ΠΈΡΠ½ΡΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ)
api/list/?gender=F - ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΡ ΠΏΠΎ ΠΏΠΎΠ»Ρ
api/list/?min_distance - ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½Π°Ρ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ΅Π½Π½ΠΎΡΡΡ ΠΏΠΎΠΈΡΠΊΠ°(ΠΊΠΌ)
api/list/?max_distance - ΠΌΠ°ΠΊΡΠΌΠ°Π»ΡΠ½Π°Ρ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΡΡΡ(ΠΊΠΌ)
Π Π΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ:
api/clients/create/
{
"emal": "your_email",
"password": "your_password",
"first_name": "first_name",
"last_name": "last_name",
"gender": "M" or "F"
}
ΠΠΎΡΡΡΠΏ Π°Π²ΡΠΎΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΏΠΎ jwt-ΡΠΎΠΊΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΠ² POST Π·Π°ΠΏΡΠΎΡ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ:
api/clients/token/
ΠΠ΅ΡΠ΅Π΄Π°Π² Π² body Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ:
{
"email": "your_email",
"password": "your_password"
}
ΠΠΎΠ»ΡΡΠΈΠ² ΡΠΎΠΊΠ΅Π½ Π΅Π³ΠΎ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² headers, ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π²Π°ΠΌ Π±ΡΠ΄Ρ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°:
Authorization: Bearer {your_token}
GerG