ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Django ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ Π²Π½Π΅ΡΠ½ΠΈΠΌΠΈ API ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π²ΡΠ΅ Π±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ Π΄Π»Ρ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π±ΠΈΠ·Π½Π΅ΡΠΎΠ², ΡΡΡΠ΅ΠΌΡΡΠΈΡ ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΡ, ΡΠ°ΡΡΠΈΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ ΠΈ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°ΡΡΡΡ Π΄Π°Π½Π½ΡΠΌΠΈ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ. ΠΡΠ°ΠΌΠΎΡΠ½Π°Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠ½ΡΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°, ΠΏΠΎΠ²ΡΡΠΈΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΡΠ°ΡΡΠΈΡΡΠ΅ΠΌΠΎΡΡΡ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ.
ΠΠ°ΡΠ΅ΠΌ Π½ΡΠΆΠ½Π° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ Π²Π½Π΅ΡΠ½ΠΈΠΌΠΈ API?
ΠΠ½Π΅ΡΠ½ΠΈΠ΅ API ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Django-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΌΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ, ΡΠ°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ ΠΏΠ»Π°ΡΠ΅ΠΆΠ½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ, CRM, ΡΠ»ΡΠΆΠ±Ρ Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ, Π°Π½Π°Π»ΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ, ΡΠΎΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΠ΅ΡΠΈ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠΈΡΡΠΎΠ²ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ. ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΡΠΎΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ:
- Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ±ΠΌΠ΅Π½ Π΄Π°Π½Π½ΡΠΌΠΈ;
- ΡΠ°ΡΡΠΈΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» Π±Π΅Π· Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΡ Π·Π°ΡΡΠ°Ρ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ;
- ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΡΡΡ ΠΈ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡΡ Π΄Π°Π½Π½ΡΡ ;
- ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΡΠ΅ ΠΈ Π³ΠΈΠ±ΠΊΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ.
ΠΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΡΠ°ΠΏΡ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Django Ρ Π²Π½Π΅ΡΠ½ΠΈΠΌΠΈ API
ΠΠ»Ρ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Π²Π°ΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ ΡΠ°Π³ΠΎΠ²:
- ΠΠ½Π°Π»ΠΈΠ· ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΈ Π²ΡΠ±ΠΎΡ API. ΠΠ·ΡΡΠΈΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ°, ΠΎΡΠ΅Π½ΠΈΡΠ΅ Π΅Π³ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΈ ΡΠ°ΡΠΈΡΡ.
- ΠΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ. ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π²Π°ΡΠ΅ Django-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ API: ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎ, Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎ, ΡΠ΅ΡΠ΅Π· Π·Π°Π΄Π°ΡΠΈ Celery ΠΈ Ρ.Π΄.
- ΠΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ. ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ API ΡΡΠ΅Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΠΊΠ΅Π½ΠΎΠ², ΠΊΠ»ΡΡΠ΅ΠΉ ΠΈΠ»ΠΈ OAuth2. ΠΠ΅ Ρ ΡΠ°Π½ΠΈΡΠ΅ ΡΠ΅ΠΊΡΠ΅ΡΡ Π² ΠΎΡΠΊΡΡΡΠΎΠΌ Π΄ΠΎΡΡΡΠΏΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΡ ΡΠ΅ΠΊΡΠ΅ΡΠΎΠ².
- Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ ΡΠ°ΡΡΠΈ. ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ Ρ API ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ
requests
ΠΈΠ»ΠΈ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΡ (httpx
,aiohttp
). ΠΠ»Ρ ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΉ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠ½ΡΠ΅ ΡΠ»ΠΎΠΈ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ°ΡΡΠ΅ΡΠ½ Π°Π΄Π°ΠΏΡΠ΅ΡΠ°. - ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΎΡΠΈΠ±ΠΎΠΊ, Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. ΠΠ°ΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ, Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΉ ΠΊ API ΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΡ ΡΠ΅ΡΡΠΎΠ².
Π‘ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Django Ρ API
1. Π‘ΠΈΠ½Ρ ΡΠΎΠ½Π½Π°Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ ΡΠ΅ΡΠ΅Π· requests
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° requests
β ΡΡΠ°Π½Π΄Π°ΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ HTTP-Π·Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π΅Ρ Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ ΠΈ ΡΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ REST API.
import requests
response = requests.get('https://api.example.com/data', params={'key': 'value'})
if response.status_code == 200:
data = response.json()
ΠΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ Π½Π΅ΡΠ°ΡΡΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈΠ»ΠΈ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΉ.
2. ΠΡΠΈΠ½Ρ ΡΠΎΠ½Π½Π°Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ
ΠΡΠ»ΠΈ Π²Π°Ρ ΡΠ΅ΡΠ²ΠΈΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈΠ»ΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠΌΠΈ API β ΡΠ°ΡΡΠΌΠΎΡΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΡΡ
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ httpx
ΠΈΠ»ΠΈ aiohttp
ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ Ρ Django Channels.
import httpx
async with httpx.AsyncClient() as client:
response = await client.get('https://api.example.com/data')
ΠΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ.
3. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Celery Π΄Π»Ρ ΡΠΎΠ½ΠΎΠ²ΡΡ Π·Π°Π΄Π°Ρ
ΠΠ»Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΉ, ΡΡΠ΅Π±ΡΡΡΠΈΡ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½ΡΠΌΠΈ ΠΈΠ»ΠΈ Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Celery Π΄Π»Ρ ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π΅ Π·Π°ΠΌΠ΅Π΄Π»ΡΡΡ ΠΎΡΠ²Π΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ.
4. OpenAPI/Swagger ΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ²
ΠΠ½ΠΎΠ³ΠΈΠ΅ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ API ΠΏΡΠ±Π»ΠΈΠΊΡΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ OpenAPI. ΠΠ»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ², ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ openapi-generator
ΠΈΠ»ΠΈ swagger-codegen
, ΡΡΠΎ ΡΠΎΠΊΡΠ°ΡΠ°Π΅Ρ Π²ΡΠ΅ΠΌΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ ΡΠ½ΠΈΠΆΠ°Π΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΡΠΈΠ±ΠΎΠΊ.
ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΉ
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ HTTPS Π΄Π»Ρ Π²ΡΠ΅Ρ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΊ API.
- Π₯ΡΠ°Π½ΠΈΡΠ΅ ΠΊΠ»ΡΡΠΈ ΠΈ ΡΠΎΠΊΠ΅Π½Ρ Π² Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²
django-environ
ΠΈΠ»ΠΈdjango-dotenv
. - ΠΠ³ΡΠ°Π½ΠΈΡΡΡΠ΅ Π΄ΠΎΡΡΡΠΏ ΠΊ API ΠΏΠΎ IP ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠΎΠ²Π½ΠΈ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ.
ΠΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³
ΠΠ»Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π·Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΠΌ Ρ Π²Π½Π΅ΡΠ½ΠΈΠΌΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ (logging
, Sentry) ΠΈ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. ΠΡΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΡΠ²ΠΎΠ΅Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π²ΡΡΠ²Π»ΡΡΡ ΠΈ ΡΡΡΡΠ°Π½ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΉ
ΠΠ½Π΅Π΄ΡΡΠΉΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ΅ΡΡΡ: ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ pytest
, responses
ΠΈΠ»ΠΈ requests-mock
Π΄Π»Ρ ΠΈΠΌΠΈΡΠ°ΡΠΈΠΈ ΡΠ°Π±ΠΎΡΡ Π²Π½Π΅ΡΠ½ΠΈΡ
API Π² ΡΠ΅ΡΡΠΎΠ²ΠΎΠΉ ΡΡΠ΅Π΄Π΅. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π±ΡΡΡΡΠΎ Π²ΡΡΠ²Π»ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΡ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ.
Π’ΠΈΠΏΠΎΠ²ΡΠ΅ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΈ ΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ
- ΠΡΠΎΠ±Π»Π΅ΠΌΡ Ρ Π»ΠΈΠΌΠΈΡΠ°ΠΌΠΈ Π·Π°ΠΏΡΠΎΡΠΎΠ². Π Π΅Π°Π»ΠΈΠ·ΡΠΉΡΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ ΠΎΡΠ΅ΡΠ΅Π΄Π΅ΠΉ ΠΈΠ»ΠΈ ΡΠ΅ΡΡΠ°Π΅Π² ΠΏΡΠΈ ΠΏΡΠ΅Π²ΡΡΠ΅Π½ΠΈΠΈ Π»ΠΈΠΌΠΈΡΠΎΠ².
- ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² API. Π‘ΠΎΠ·Π΄Π°Π²Π°ΠΉΡΠ΅ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ Π΄Π»Ρ Π»Π΅Π³ΠΊΠΎΠΉ Π°Π΄Π°ΠΏΡΠ°ΡΠΈΠΈ ΠΊ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΠΈΠΌΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠΌ API.
- ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΎΡΠΈΠ±ΠΎΠΊ. ΠΠ½Π΅Π΄ΡΡΠΉΡΠ΅ ΡΠ΅Π½ΡΡΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π°Π»Π΅ΡΡΡ Π΄Π»Ρ ΡΠ²ΠΎΠ΅Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΡΠ±ΠΎΠΈ.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Django ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ Π²Π½Π΅ΡΠ½ΠΈΠΌΠΈ API β ΡΡΠΎ ΠΌΠΎΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Π²Π°ΡΠ΅Π³ΠΎ Π±ΠΈΠ·Π½Π΅ΡΠ°. Π‘ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π½Π°Π΄Π΅ΠΆΠ½ΡΠ΅, ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΡΠ΅ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΈ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡ.
ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠ΅ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ ΠΏΠΎΠΌΠΎΡΡ ΠΏΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Django Ρ Π²Π½Π΅ΡΠ½ΠΈΠΌΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ, ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ΡΡ ΠΊ Π½Π°ΠΌ. Π£Π·Π½Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅
Raman Sapezhka
CEO Plantago/CTO