واجهة برمجة التطبيقات الغذائية المجانية للمطورين: كيفية بناء تطبيقات باستخدام بيانات Nutrola
دليل للمطورين لبناء تطبيقات واعية بالتغذية باستخدام واجهة برمجة التطبيقات الغذائية المجانية من Nutrola. يتناول النقاط الأساسية، المصادقة، أمثلة على الشيفرات بلغة بايثون وجافا سكريبت وcURL، حدود الاستخدام، ومقارنات مع واجهات برمجة التطبيقات Nutritionix وEdamam وUSDA.
كان بناء تطبيق واعٍ بالتغذية يتطلب في السابق تجميع قاعدة بيانات الطعام الخاصة بك من الصفر، أو ترخيص مجموعات بيانات باهظة الثمن، أو استخراج المعلومات من مصادر غير موثوقة. اليوم، توفر واجهات برمجة التطبيقات الغذائية وصولاً منظمًا وبرمجيًا إلى قواعد بيانات الطعام الشاملة، مع بيانات عن المغذيات الكبيرة، والمغذيات الدقيقة، وأحجام الحصص، يتم تسليمها بصيغة JSON نظيفة. يوجه هذا الدليل المطورين عبر مشهد واجهات برمجة التطبيقات الغذائية، مع التركيز على كيفية البدء باستخدام المستوى المجاني من Nutrola وكيفية مقارنته بالبدائل.
سواء كنت تبني تطبيق تخطيط وجبات، أو متتبع للياقة البدنية، أو أداة بحث، أو محلل وصفات، أو مساعد ذكاء اصطناعي يجيب على أسئلة التغذية، يقدم لك هذا الدليل التفاصيل التقنية لاختيار واجهة برمجة التطبيقات وبدء إرسال الطلبات في دقائق.
نظرة عامة على مشهد واجهات برمجة التطبيقات الغذائية
قبل الغوص في التنفيذ، إليك مقارنة بين واجهات برمجة التطبيقات الغذائية الرئيسية المتاحة للمطورين في عام 2026.
| واجهة برمجة التطبيقات | المستوى المجاني | حد الاستخدام (مجاني) | الأطعمة في قاعدة البيانات | مسح الباركود | التعرف على الطعام (ذكاء اصطناعي) | التسعير (مدفوع) |
|---|---|---|---|---|---|---|
| Nutrola API | نعم | 500 طلب/يوم | 900,000+ | نعم | نعم (إضافة) | من 29 دولار/شهر |
| USDA FoodData Central | نعم (مجاني بالكامل) | 1,000/ساعة لكل مفتاح | 370,000+ | لا | لا | مجاني |
| Nutritionix API | نعم (محدود) | 50 طلب/يوم | 1,000,000+ | نعم | لا | من 299 دولار/شهر |
| Edamam API | نعم | 100 طلب/يوم | 900,000+ | لا | لا | من 19 دولار/شهر |
| FatSecret Platform API | نعم | 5,000 طلب/يوم | 500,000+ | نعم | لا | مجاني (مع الإسناد) |
| Open Food Facts API | نعم (مجاني بالكامل) | استخدام معقول | 3,000,000+ | نعم | لا | مجاني |
| Spoonacular | نعم | 150 طلب/يوم | 500,000+ | لا | لا | من 29 دولار/شهر |
البدء باستخدام واجهة Nutrola API
الخطوة 1: إنشاء حساب مطور
قم بزيارة بوابة مطوري Nutrola على developers.nutrola.com لإنشاء حساب مجاني. بعد التحقق من البريد الإلكتروني، ستتلقى مفتاح API على لوحة التحكم الخاصة بك. يتضمن المستوى المجاني 500 طلب في اليوم، والوصول إلى قاعدة بيانات الطعام الكاملة، والبحث النصي عن الطعام. تتوفر نقاط نهاية التعرف على الطعام بالذكاء الاصطناعي في المستويات المدفوعة.
الخطوة 2: المصادقة
تتطلب جميع طلبات API مفتاح API الخاص بك في رأس الطلب. يتم تمرير المفتاح عبر رأس X-Api-Key.
X-Api-Key: your_api_key_here
تستخدم واجهة API HTTPS حصريًا. ستتلقى جميع الطلبات إلى نقاط نهاية HTTP إعادة توجيه 301 إلى HTTPS. لا تقم بإدراج مفتاح API الخاص بك في الشيفرة على جانب العميل؛ قم دائمًا بتمرير الطلبات عبر خادمك الخلفي.
الخطوة 3: عنوان URL الأساسي
تقدم جميع النقاط النهائية من:
https://api.nutrola.com/v1/
تكون الاستجابات بصيغة JSON مع ترميز UTF-8. تتبع واجهة API معايير RESTful مع رموز الحالة HTTP القياسية.
النقاط الأساسية
البحث عن الأطعمة
ابحث في قاعدة بيانات الطعام عن طريق استعلام نصي. تعيد الأطعمة المطابقة مع بيانات التغذية.
نقطة النهاية: GET /v1/foods/search
المعلمات:
| المعلمة | النوع | مطلوب | الوصف |
|---|---|---|---|
| query | string | نعم | مصطلح البحث (مثل "صدر دجاج مشوي") |
| limit | integer | لا | النتائج لكل صفحة (افتراضي: 10، الحد الأقصى: 50) |
| offset | integer | لا | إزاحة الصفحات (افتراضي: 0) |
| type | string | لا | تصفية حسب النوع: "شائع"، "ماركة"، "مطعم" |
| language | string | لا | رمز اللغة (افتراضي: "en"). يدعم: en، es، de، fr، pt، ja، ko، zh |
مثال على الطلب (cURL):
curl -X GET "https://api.nutrola.com/v1/foods/search?query=grilled+chicken+breast&limit=5" \
-H "X-Api-Key: your_api_key_here"
مثال على الطلب (Python):
import requests
API_KEY = "your_api_key_here"
BASE_URL = "https://api.nutrola.com/v1"
response = requests.get(
f"{BASE_URL}/foods/search",
headers={"X-Api-Key": API_KEY},
params={
"query": "صدر دجاج مشوي",
"limit": 5
}
)
data = response.json()
for food in data["foods"]:
print(f"{food['name']}: {food['calories']} سعر حراري لكل {food['serving_size']}{food['serving_unit']}")
مثال على الطلب (JavaScript / Node.js):
const API_KEY = "your_api_key_here";
const BASE_URL = "https://api.nutrola.com/v1";
async function searchFoods(query) {
const url = new URL(`${BASE_URL}/foods/search`);
url.searchParams.append("query", query);
url.searchParams.append("limit", "5");
const response = await fetch(url, {
headers: { "X-Api-Key": API_KEY }
});
const data = await response.json();
return data.foods;
}
searchFoods("صدر دجاج مشوي").then(foods => {
foods.forEach(food => {
console.log(`${food.name}: ${food.calories} سعر حراري لكل ${food.serving_size}${food.serving_unit}`);
});
});
مثال على الاستجابة:
{
"foods": [
{
"id": "nf_001234",
"name": "صدر دجاج مشوي، بدون جلد",
"type": "شائع",
"calories": 165,
"protein_g": 31.0,
"carbohydrates_g": 0.0,
"fat_g": 3.6,
"fiber_g": 0.0,
"sugar_g": 0.0,
"sodium_mg": 74,
"serving_size": 100,
"serving_unit": "غ",
"serving_description": "100 غرام",
"alt_servings": [
{
"description": "صدر متوسط (196غ)",
"multiplier": 1.96
},
{
"description": "1 أونصة (28غ)",
"multiplier": 0.28
}
],
"source": "USDA SR Legacy",
"updated": "2026-01-15"
}
],
"total_results": 47,
"offset": 0,
"limit": 5
}
الحصول على الطعام بواسطة المعرف
استرجع بيانات التغذية التفصيلية لعنصر غذائي محدد بواسطة معرف Nutrola الخاص به.
نقطة النهاية: GET /v1/foods/{food_id}
مثال (cURL):
curl -X GET "https://api.nutrola.com/v1/foods/nf_001234" \
-H "X-Api-Key: your_api_key_here"
تتضمن الاستجابة ملفًا كاملًا من المغذيات الكبيرة والمغذيات الدقيقة (أكثر من 30 عنصرًا غذائيًا)، وجميع أحجام الحصص المتاحة، وقائمة المكونات (للعناصر ذات العلامات التجارية والمطاعم)، وعلامات الحساسية، وعلامات النظام الغذائي (نباتي، خالي من الجلوتين، حلال، كوشير)، وإسناد المصدر.
الحصول على الطعام بواسطة الباركود
ابحث عن منتج غذائي معبأ بواسطة باركوده UPC أو EAN.
نقطة النهاية: GET /v1/foods/barcode/{code}
المعلمات:
| المعلمة | النوع | مطلوب | الوصف |
|---|---|---|---|
| code | string | نعم | باركود UPC (12 رقم) أو EAN (13 رقم) |
مثال (Python):
response = requests.get(
f"{BASE_URL}/foods/barcode/041331092609",
headers={"X-Api-Key": API_KEY}
)
food = response.json()
print(f"{food['name']}: {food['calories']} سعر حراري لكل {food['serving_description']}")
تحليل المدخلات بلغة طبيعية
قم بتحليل وصف غذائي بلغة طبيعية وأعد بيانات التغذية المنظمة. تتعامل هذه النقطة مع الكميات، والوحدات، وطرق التحضير، والعناصر المتعددة في سلسلة واحدة.
نقطة النهاية: POST /v1/foods/analyze
جسم الطلب:
{
"query": "2 بيض مخفوق مع شريحة من خبز القمح الكامل ونصف أفوكادو",
"language": "en"
}
مثال (Python):
response = requests.post(
f"{BASE_URL}/foods/analyze",
headers={
"X-Api-Key": API_KEY,
"Content-Type": "application/json"
},
json={
"query": "2 بيض مخفوق مع شريحة من خبز القمح الكامل ونصف أفوكادو"
}
)
result = response.json()
for item in result["items"]:
print(f"{item['quantity']} {item['unit']} {item['name']}: {item['calories']} سعر حراري")
print(f"الإجمالي: {result['total']['calories']} سعر حراري")
مثال على الاستجابة:
{
"items": [
{
"name": "بيض مخفوق",
"quantity": 2,
"unit": "كبير",
"calories": 182,
"protein_g": 12.2,
"carbohydrates_g": 2.4,
"fat_g": 13.6,
"food_id": "nf_002891"
},
{
"name": "خبز قمح كامل",
"quantity": 1,
"unit": "شريحة",
"calories": 81,
"protein_g": 3.9,
"carbohydrates_g": 13.8,
"fat_g": 1.1,
"food_id": "nf_003401"
},
{
"name": "أفوكادو",
"quantity": 0.5,
"unit": "متوسط",
"calories": 120,
"protein_g": 1.5,
"carbohydrates_g": 6.4,
"fat_g": 11.0,
"food_id": "nf_000892"
}
],
"total": {
"calories": 383,
"protein_g": 17.6,
"carbohydrates_g": 22.6,
"fat_g": 25.7
}
}
التعرف على الطعام بالذكاء الاصطناعي (المستوى المدفوع)
قم بإرسال صورة طعام للتعرف عليها وتحليلها غذائيًا باستخدام الذكاء الاصطناعي.
نقطة النهاية: POST /v1/foods/recognize
الطلب: بيانات متعددة الأجزاء مع ملف الصورة، أو جسم JSON مع صورة مشفرة بتنسيق base64.
مثال (Python):
with open("meal_photo.jpg", "rb") as f:
response = requests.post(
f"{BASE_URL}/foods/recognize",
headers={"X-Api-Key": API_KEY},
files={"image": ("meal.jpg", f, "image/jpeg")}
)
result = response.json()
for item in result["detected_items"]:
print(f"{item['name']} ({item['confidence']:.1%}): {item['calories']} سعر حراري")
تتضمن الاستجابة العناصر الغذائية المكتشفة مع درجات الثقة، وإحداثيات صندوق الحدود، وأحجام الحصص المقدرة، وتفصيل التغذية لكل عنصر، وملخص التغذية الإجمالية للوجبة.
حدود الاستخدام ومعالجة الأخطاء
حدود الاستخدام حسب المستوى
| المستوى | الطلبات اليومية | الطلبات/ثانية | التعرف على الذكاء الاصطناعي | السعر |
|---|---|---|---|---|
| مجاني | 500 | 5 | غير مشمول | 0 دولار |
| مبتدئ | 5,000 | 10 | 100/يوم | 29 دولار/شهر |
| محترف | 50,000 | 25 | 1,000/يوم | 99 دولار/شهر |
| مؤسسي | مخصص | مخصص | مخصص | اتصل بالمبيعات |
رؤوس حدود الاستخدام
تتضمن كل استجابة رؤوس حدود الاستخدام:
X-RateLimit-Limit: 500
X-RateLimit-Remaining: 487
X-RateLimit-Reset: 1710374400
استجابات الأخطاء
تستخدم واجهة API رموز الحالة HTTP القياسية مع أجسام خطأ وصفية.
{
"error": {
"code": "rate_limit_exceeded",
"message": "تم تجاوز الحد اليومي للطلبات البالغ 500. يتم إعادة تعيينه في 00:00 UTC.",
"status": 429
}
}
| رمز الحالة | المعنى |
|---|---|
| 200 | نجاح |
| 400 | طلب غير صحيح (معلمات غير صالحة) |
| 401 | غير مصرح (مفتاح API غير صالح أو مفقود) |
| 404 | الطعام غير موجود |
| 429 | تم تجاوز حد الاستخدام |
| 500 | خطأ داخلي في الخادم |
قم بتنفيذ التراجع الأسي للاستجابات 429 و500. استراتيجية بسيطة هي الانتظار لمدة 1 ثانية بعد الفشل الأول، و2 ثانية بعد الثاني، و4 بعد الثالث، حتى حد أقصى قدره 60 ثانية.
حالات الاستخدام وأنماط التنفيذ
تطبيقات تخطيط الوجبات
قم ببناء مخطط وجبات يحقق أهداف المغذيات الكبيرة من خلال البحث عن الأطعمة، وحساب الإجماليات الغذائية، والتكرار حتى يتوافق مخطط الوجبات مع أهداف المستخدم.
def find_foods_for_target(target_protein, target_calories):
"""ابحث عن الأطعمة الغنية بالبروتين ضمن ميزانية السعرات الحرارية."""
response = requests.get(
f"{BASE_URL}/foods/search",
headers={"X-Api-Key": API_KEY},
params={
"query": "غني بالبروتين",
"limit": 20,
"type": "شائع"
}
)
foods = response.json()["foods"]
# تصفية حسب نسبة البروتين إلى السعرات الحرارية
efficient_foods = [
f for f in foods
if f["protein_g"] / max(f["calories"], 1) > 0.15
]
return sorted(efficient_foods, key=lambda f: f["protein_g"], reverse=True)
تكامل تطبيقات اللياقة البدنية
قم بالربط مع بيانات النشاط لإظهار توازن السعرات الحرارية للمستخدمين. استخدم نقطة النهاية للغة الطبيعية للتسجيل السريع.
async function logMealFromText(description) {
const response = await fetch(`${BASE_URL}/foods/analyze`, {
method: "POST",
headers: {
"X-Api-Key": API_KEY,
"Content-Type": "application/json"
},
body: JSON.stringify({ query: description })
});
const data = await response.json();
// التخزين في قاعدة البيانات الخاصة بك
await db.meals.insert({
user_id: currentUser.id,
items: data.items,
total_calories: data.total.calories,
total_protein: data.total.protein_g,
timestamp: new Date()
});
return data;
}
حاسبة التغذية للوصفات
احسب المحتوى الغذائي لوصفة من خلال البحث عن كل مكون وجمع القيم.
def analyze_recipe(ingredients):
"""
المكونات: قائمة من السلاسل مثل ["200غ صدر دجاج"، "1 كوب أرز بني"، "2 ملعقة طعام زيت زيتون"]
"""
recipe_nutrition = {"calories": 0, "protein_g": 0, "carbohydrates_g": 0, "fat_g": 0}
for ingredient in ingredients:
response = requests.post(
f"{BASE_URL}/foods/analyze",
headers={
"X-Api-Key": API_KEY,
"Content-Type": "application/json"
},
json={"query": ingredient}
)
data = response.json()
for item in data["items"]:
recipe_nutrition["calories"] += item["calories"]
recipe_nutrition["protein_g"] += item["protein_g"]
recipe_nutrition["carbohydrates_g"] += item["carbohydrates_g"]
recipe_nutrition["fat_g"] += item["fat_g"]
return recipe_nutrition
# مثال على الاستخدام
recipe = analyze_recipe([
"200غ صدر دجاج",
"1 كوب أرز بني مطبوخ",
"2 ملعقة طعام زيت زيتون",
"1 كوب بروكلي مطبوخ"
])
print(f"إجمالي الوصفة: {recipe['calories']} سعر حراري، {recipe['protein_g']}غ بروتين")
البحث والتحليل البياني
للبحث الأكاديمي، استخدم واجهة API لبناء ملفات تعريف التغذية للسكان المدروسة أو للتحقق من أدوات التقييم الغذائي.
import pandas as pd
def build_nutrition_profile(food_log_df):
"""
food_log_df: DataFrame مع الأعمدة ['food_description', 'date']
تعيد DataFrame مع تفصيل التغذية الكامل لكل إدخال.
"""
results = []
for _, row in food_log_df.iterrows():
response = requests.post(
f"{BASE_URL}/foods/analyze",
headers={
"X-Api-Key": API_KEY,
"Content-Type": "application/json"
},
json={"query": row["food_description"]}
)
data = response.json()
results.append({
"date": row["date"],
"description": row["food_description"],
"calories": data["total"]["calories"],
"protein_g": data["total"]["protein_g"],
"carbs_g": data["total"]["carbohydrates_g"],
"fat_g": data["total"]["fat_g"]
})
return pd.DataFrame(results)
مقارنة مع واجهات برمجة التطبيقات البديلة
واجهة USDA FoodData Central API
تعتبر واجهة USDA مجانية تمامًا بدون مستويات مدفوعة، مما يجعلها الخيار الافتراضي للمشاريع الأكاديمية والحكومية. تغطي حوالي 370,000 طعام عبر قواعد بيانات Foundation وSR Legacy وSurvey (FNDDS) وBranded. تشمل نقاط القوة كونها المعيار الذهبي لبيانات تكوين الطعام في الولايات المتحدة، والسلطة التي تشير إليها قواعد البيانات الأخرى. تشمل القيود عدم وجود تحليل للغة الطبيعية (يجب عليك مطابقة أسماء الطعام مع مفاتيح قاعدة البيانات المحددة)، وعدم وجود بحث بواسطة الباركود، وعدم وجود اعتراف بالذكاء الاصطناعي، وقد تكون بيانات الطعام ذات العلامات التجارية غير متسقة لأنها تعتمد على تقديمات الشركات المصنعة. تعتبر وثائق واجهة API وظيفية ولكنها ليست صديقة للمطورين بمعايير اليوم.
الأفضل لـ: البحث الأكاديمي، المشاريع الحكومية، التطبيقات التي تحتاج إلى بيانات مرجعية موثوقة ولديها موارد مطورين للتعامل مع تعقيد المطابقة.
واجهة Nutritionix API
تمتلك Nutritionix واحدة من أكبر قواعد بيانات الطعام مع تغطية قوية للأطعمة من المطاعم والعلامات التجارية. نقطة النهاية الخاصة بها للغة الطبيعية ناضجة وتتعامل مع الاستعلامات المعقدة بشكل جيد. ومع ذلك، فإن المستوى المجاني محدود للغاية عند 50 طلبًا في اليوم، وتبدأ الخطط المدفوعة من 299 دولارًا في الشهر، مما يجعلها بعيدة عن متناول العديد من المطورين المستقلين والشركات الناشئة الصغيرة. واجهة API موثقة جيدًا وتدعم كل من البحث النصي والبحث بواسطة الباركود.
الأفضل لـ: التطبيقات الممولة جيدًا التي تحتاج إلى بيانات موسعة عن الطعام من المطاعم ويمكنها تحمل الأسعار.
واجهة Edamam API
تقدم Edamam واجهات برمجة التطبيقات لتحليل التغذية، وتحليل الوصفات، وقاعدة بيانات الطعام. يوفر المستوى المجاني 100 طلب في اليوم، وهو قابل للاستخدام لتطوير النماذج الأولية. تتمثل قوة Edamam في قدرتها على تحليل الوصفات، حيث يمكنها تحليل قائمة مكونات كاملة للوصفة وإعادة بيانات التغذية لكل حصة. تغطي قاعدة البيانات حوالي 900,000 طعام. تشمل القيود عدم الاتساق أحيانًا في بيانات حجم الحصة وتجربة المطور الأقل بديهية مقارنةً بواجهات API الأحدث.
الأفضل لـ: التطبيقات التي تركز على الوصفات، أدوات تخطيط الوجبات التي تحتاج إلى تحليل على مستوى الوصفة.
واجهة FatSecret Platform API
تقدم FatSecret مستوى مجانيًا سخيًا مع 5,000 طلب في اليوم، مما يجعلها جذابة للمشاريع التي تحتاج إلى ميزانية محدودة. العيب هو أنه يجب عليك عرض علامة FatSecret التجارية والإسناد في تطبيقك. تغطي قاعدة البيانات حوالي 500,000 طعام مع تغطية دولية جيدة. تدعم واجهة API مصادقة OAuth 1.0، وهي قديمة وأكثر تعقيدًا في التنفيذ من نهج مفتاح API أو OAuth 2.0.
الأفضل لـ: المشاريع ذات الميزانية المحدودة التي يمكنها استيعاب متطلبات الإسناد وOAuth 1.0.
واجهة Open Food Facts API
Open Food Facts هي قاعدة بيانات غذائية مفتوحة المصدر مدفوعة بالمجتمع تحتوي على أكثر من 3 ملايين منتج، معظمها من السلع المعبأة مع بيانات الباركود. هي مجانية تمامًا ومفتوحة (رخصة قاعدة البيانات المفتوحة). واجهة API بسيطة لعمليات البحث بواسطة الباركود ولكنها أقل تنظيمًا لاستعلامات البحث الغذائية. تتفاوت جودة البيانات لأن المساهمات تأتي من المجتمع، على الرغم من أن عملية مراجعة المجتمع تلتقط العديد من الأخطاء.
الأفضل لـ: مسح الباركود للغذاء المعبأ، المشاريع التي تتماشى مع مبادئ المصدر المفتوح، تغطية دولية للأطعمة المعبأة.
ملخص مقارنة واجهات برمجة التطبيقات
| الميزة | Nutrola | USDA | Nutritionix | Edamam | FatSecret | Open Food Facts |
|---|---|---|---|---|---|---|
| حد الاستخدام اليومي للمستوى المجاني | 500 | 1,000/ساعة | 50 | 100 | 5,000 | غير محدود |
| تحليل اللغة الطبيعية | نعم | لا | نعم | نعم | لا | لا |
| التعرف على الطعام بالذكاء الاصطناعي | نعم (مدفوع) | لا | لا | لا | لا | لا |
| البحث بواسطة الباركود | نعم | لا | نعم | لا | نعم | نعم |
| دعم متعدد اللغات | 8 لغات | الإنجليزية | الإنجليزية | الإنجليزية | 16 لغة | 40+ لغة |
| تحليل الوصفات | عبر NLP | لا | نعم | نعم | لا | لا |
| عمق المغذيات الدقيقة | أكثر من 30 عنصر غذائي | أكثر من 60 عنصر غذائي | أكثر من 20 عنصر غذائي | أكثر من 25 عنصر غذائي | أكثر من 15 عنصر غذائي | متنوع |
| المصادقة | مفتاح API | مفتاح API | مفتاح API | معرف التطبيق + مفتاح | OAuth 1.0 | لا شيء (اختياري) |
أفضل الممارسات لبناء تطبيقات التغذية
التخزين المؤقت بشكل مكثف
لا تتغير بيانات التغذية للأطعمة الشائعة بشكل متكرر. قم بتخزين نتائج بحث الطعام وعمليات البحث الغذائية على خادمك الخلفي لمدة 24 إلى 72 ساعة لتقليل استدعاءات واجهة API وتحسين أوقات الاستجابة.
التعامل مع البيانات المفقودة بشكل جيد
ليس كل إدخال غذائي يحتوي على بيانات مغذيات دقيقة كاملة. صمم واجهة المستخدم الخاصة بك للإشارة عندما تكون البيانات غير متاحة بدلاً من عرض الأصفار، والتي قد يسيء المستخدمون تفسيرها على أنها "هذا الطعام يحتوي على صفر من الحديد".
تحقق من إدخال المستخدم قبل استدعاءات API
قم بقص المسافات البيضاء، وتوحيد الوحدات، والتحقق من تهجئة أسماء الطعام قبل إرسالها إلى واجهة API. ينتج عن الاستعلام المنظم بشكل جيد نتائج أفضل بكثير من الاستعلامات المليئة بالأخطاء الإملائية.
استخدم نقطة النهاية للغة الطبيعية عند الإمكان
بدلاً من بناء محلل خاص بأسماء الطعام، استخدم نقطة النهاية /foods/analyze. إنها تتعامل مع الكميات ("2 كوب")، وطرق التحضير ("مشوي")، والأوصاف المركبة ("خبز قمح كامل مع زبدة") بشكل أفضل من معظم التطبيقات المخصصة.
احترام حدود الاستخدام
قم بتنفيذ منطق التراجع المناسب. قم بعمليات الدفعة حيثما كان ذلك ممكنًا. استخدم الويب هوكس أو قوائم الانتظار للعمليات عالية الحجم بدلاً من استدعاءات واجهة API المتزامنة.
إسناد مصادر البيانات
تعتبر الممارسة الجيدة (وفي بعض الأحيان متطلبًا قانونيًا حسب واجهة API) هي إسناد مصدر البيانات. عرض "بيانات التغذية مقدمة من Nutrola" أو ما يعادلها لأي واجهة API تستخدمها.
الأسئلة الشائعة
هل واجهة Nutrola API مجانية حقًا؟
نعم. يوفر المستوى المجاني 500 طلب API في اليوم بدون أي تكلفة، دون الحاجة إلى بطاقة ائتمان. هذا يكفي لتطوير النماذج الأولية، والتطبيقات الصغيرة، والمشاريع الشخصية. يتضمن المستوى المجاني البحث النصي، والبحث عن الطعام بواسطة المعرف، ومسح الباركود، وتحليل اللغة الطبيعية. يتوفر التعرف على الطعام بالذكاء الاصطناعي من الصور في المستويات المدفوعة التي تبدأ من 29 دولارًا في الشهر.
ما هو تنسيق البيانات الذي تعيده واجهة API؟
تكون جميع الاستجابات بصيغة JSON مع ترميز UTF-8. تستخدم القيم الغذائية وحدات قياسية: السعرات الحرارية للكهرباء، والغرامات للمغذيات الكبيرة والألياف، والمليغرامات للصوديوم ومعظم المعادن، والميكروغرامات للفيتامينات حيثما كان ذلك مناسبًا.
هل يمكنني استخدام واجهة Nutrola API في تطبيق تجاري؟
نعم. يسمح كلا من المستويين المجاني والمدفوع بالاستخدام التجاري. يتطلب المستوى المجاني إسناد Nutrola في تطبيقك. تشمل المستويات المدفوعة خيارات العلامة البيضاء حيث لا يلزم الإسناد.
كم مرة يتم تحديث قاعدة بيانات الطعام؟
تتم تحديث قاعدة بيانات الطعام في Nutrola باستمرار للأطعمة ذات العلامات التجارية والمطاعم، مع مزامنة بيانات مرجعية USDA في غضون 30 يومًا من إصدارات USDA. تحدث تحديثات كبيرة لقاعدة البيانات شهريًا، بينما قد يتم تحديث إدخالات الطعام الفردية يوميًا بناءً على تغييرات الشركات المصنعة، والتصحيحات المبلغ عنها من قبل المستخدمين، وإطلاق منتجات جديدة.
هل تدعم واجهة API الأطعمة الدولية؟
نعم. تغطي قاعدة البيانات الأطعمة من أكثر من 50 دولة، مع توفر البحث بـ 8 لغات (الإنجليزية، الإسبانية، الألمانية، الفرنسية، البرتغالية، اليابانية، الكورية، والصينية). تعتبر تغطية الأطعمة الدولية أولوية أساسية لـ Nutrola، وتشمل قاعدة البيانات الأطباق الإقليمية، والمنتجات ذات العلامات التجارية المحلية، وتحضيرات المأكولات الخاصة التي غالبًا ما تكون مفقودة من قواعد البيانات التي تركز على الولايات المتحدة.
هل يمكنني استخدام واجهة API لتطبيق موبايل؟
نعم، لكن لا تقم بإدراج مفتاح API الخاص بك مباشرة في الشيفرة الخاصة بالعميل على الهاتف المحمول، حيث يمكن استخراجه من ثنائي التطبيق. بدلاً من ذلك، قم بإعداد خادم خلفي خفيف الوزن يقوم بتمرير الطلبات إلى واجهة Nutrola API ويتعامل مع المصادقة. يمنحك هذا أيضًا طبقة للتخزين المؤقت وإدارة الطلبات.
هل هناك خيار ويب هوك أو دفق؟
حاليًا، تعمل واجهة API على نموذج الطلب-الاستجابة. دعم الويب هوك لنتائج التعرف على الطعام غير المتزامنة (لعمليات المعالجة الكبيرة) على خريطة الطريق لعام 2026. اليوم، استخدم نقطة النهاية /v1/foods/analyze/batch، التي تقبل ما يصل إلى 20 عنصرًا في طلب واحد.
الخاتمة
لقد جعلت واجهات برمجة التطبيقات الغذائية من العملي للمطورين بناء تطبيقات واعية بالطعام دون الحاجة إلى العبء الكبير المتمثل في الحفاظ على قاعدة بيانات طعام خاصة. توفر واجهة Nutrola API مستوى مجاني سخي، وتغطية شاملة للطعام عبر المأكولات الدولية، وفهم اللغة الطبيعية، والتعرف الاختياري على الطعام بالذكاء الاصطناعي، مما يجعلها خيارًا قويًا للمشاريع التي تتراوح من النماذج الأولية في عطلة نهاية الأسبوع إلى التطبيقات الإنتاجية.
يعتمد أفضل API لمشروعك على احتياجاتك المحددة: USDA للبيانات المرجعية الموثوقة، Nutritionix لتغطية عميقة للأطعمة من المطاعم، Open Food Facts لبيانات الباركود المفتوحة، أو Nutrola لتحقيق توازن بين الميزات والدقة وتجربة المطور. في العديد من الحالات، يمنحك الجمع بين واجهات برمجة التطبيقات المتعددة أفضل تغطية. ابدأ بالمستوى المجاني، تحقق من صلاحيته مقابل حالة الاستخدام الخاصة بك، وابدأ من هناك.
مستعد لتحويل تتبع تغذيتك؟
انضم إلى الآلاف الذين حولوا رحلتهم الصحية مع Nutrola!