أمثلة بلغة بايثون – واجهة برمجة تطبيقات الصحة واللياقة البدنية¶
تتيح لك بايثون التفاعل بسهولة مع واجهات برمجة التطبيقات RESTful مثل واجهة برمجة تطبيقات الصحة واللياقة البدنية. أدناه، ستجد أمثلة باستخدام العديد من مكتبات HTTP الخاصة ببايثون لكل من الطلبات المتزامنة وغير المتزامنة.
1. باستخدام requests (متزامنة، الأكثر شيوعًا)¶
import requests
API_KEY = "YOUR_API_KEY"
url = "https://api.hefitapi.com/api/v1/bmi"
params = {
"height": 178,
"weight": 82,
"units": "metric",
"lang": "en"
}
headers = {"X-API-Key": API_KEY}
response = requests.get(url, headers=headers, params=params)
data = response.json()
print(data)
مثال على طلب POST:
import requests
API_KEY = "YOUR_API_KEY"
url = "https://api.hefitapi.com/api/v1/bmi/post"
payload = {
"height": 178,
"weight": 82,
"units": "metric"
}
headers = {
"X-API-Key": API_KEY,
"Content-Type": "application/json"
}
response = requests.post(url, headers=headers, json=payload)
data = response.json()
print(data)
2. باستخدام httpx (متزامنة وغير متزامنة)¶
مثال على طلب GET متزامن:
import httpx
API_KEY = "YOUR_API_KEY"
url = "https://api.hefitapi.com/api/v1/bmi"
params = {"height": 178, "weight": 82, "units": "metric", "lang": "en"}
headers = {"X-API-Key": API_KEY}
with httpx.Client() as client:
response = client.get(url, headers=headers, params=params)
data = response.json()
print(data)
مثال على طلب GET غير متزامن:
import httpx
import asyncio
API_KEY = "YOUR_API_KEY"
url = "https://api.hefitapi.com/api/v1/bmi"
params = {"height": 178, "weight": 82, "units": "metric", "lang": "en"}
headers = {"X-API-Key": API_KEY}
async def fetch_bmi():
async with httpx.AsyncClient() as client:
response = await client.get(url, headers=headers, params=params)
data = response.json()
print(data)
asyncio.run(fetch_bmi())
مثال على طلب POST (غير متزامن):
async def post_bmi():
payload = {"height": 178, "weight": 82, "units": "metric"}
async with httpx.AsyncClient() as client:
response = await client.post(url + "/post", headers=headers, json=payload)
data = response.json()
print(data)
asyncio.run(post_bmi())
3. باستخدام urllib (مكتبة القياسية)¶
import json
from urllib import request, parse
API_KEY = "YOUR_API_KEY"
url = "https://api.hefitapi.com/api/v1/bmi"
params = {"height": 178, "weight": 82, "units": "metric", "lang": "en"}
query_string = parse.urlencode(params)
full_url = f"{url}?{query_string}"
req = request.Request(full_url, headers={"X-API-Key": API_KEY})
with request.urlopen(req) as response:
data = json.load(response)
print(data)
مثال على طلب POST باستخدام urllib:
payload = json.dumps({"height": 178, "weight": 82, "units": "metric"}).encode("utf-8")
req = request.Request(url + "/post", data=payload, method="POST")
req.add_header("Content-Type", "application/json")
req.add_header("X-API-Key", API_KEY)
with request.urlopen(req) as response:
data = json.load(response)
print(data)
4. باستخدام aiohttp (غير متزامن، شائع للاطارات غير المتزامنة)¶
import aiohttp
import asyncio
API_KEY = "YOUR_API_KEY"
url = "https://api.hefitapi.com/api/v1/bmi"
params = {"height": 178, "weight": 82, "units": "metric", "lang": "en"}
headers = {"X-API-Key": API_KEY}
async def fetch_bmi():
async with aiohttp.ClientSession() as session:
async with session.get(url, headers=headers, params=params) as resp:
data = await resp.json()
print(data)
asyncio.run(fetch_bmi())
مثال على طلب POST (باستخدام aiohttp):
async def post_bmi():
payload = {"height": 178, "weight": 82, "units": "metric"}
async with aiohttp.ClientSession() as session:
async with session.post(url + "/post", headers=headers, json=payload) as resp:
data = await resp.json()
print(data)
asyncio.run(post_bmi())
5. ملاحظات وأفضل الممارسات¶
- تأكد دائمًا من استبدال
YOUR_API_KEYبمفتاح API الخاص بك. - استخدم المعلمة
langلدعم اللغات المتعددة (مثلen،fr،de،es، إلخ). - لإنتاج، ضع في اعتبارك تجميع الاتصالات (باستخدام عميل
httpx) و طلبات غير متزامنة لتحسين الأداء. - تعامل مع الأخطاء بأمان: رموز HTTP، والحدود الزمنية، والاستثناءات.
- تتضمن الاستجابات إشارات المخاطر، وخطط العمل، ومعلومات المؤسسة عند توفرها.
الخطوات التالية¶
تحقق من الأمثلة الخاصة باللغات الأخرى:
- PHP
- JavaScript
- NodeJs
- Kotlin / Android
- Flutter / Dart
- React Native / Expo
- Bash Shell
- Go / Golang
- Ruby / Rails
ابدأ في دمج واجهة برمجة تطبيقات الصحة واللياقة البدنية في تطبيقات بايثون الخاصة بك اليوم!
واجهة برمجة تطبيقات الصحة واللياقة البدنية تمكين البنية التحتية الرقمية الصحية الحديثة