واجهة برمجة التطبيقات الغذائية المجانية للمطورين: كيفية بناء تطبيقات باستخدام بيانات Nutrola

دليل للمطورين لبناء تطبيقات واعية بالتغذية باستخدام واجهة برمجة التطبيقات الغذائية المجانية من Nutrola. يتناول النقاط الأساسية، المصادقة، أمثلة على الشيفرات بلغة بايثون وجافا سكريبت وcURL، حدود الاستخدام، ومقارنات مع واجهات برمجة التطبيقات Nutritionix وEdamam وUSDA.

Medically reviewed by Dr. Emily Torres, Registered Dietitian Nutritionist (RDN)

كان بناء تطبيق واعٍ بالتغذية يتطلب في السابق تجميع قاعدة بيانات الطعام الخاصة بك من الصفر، أو ترخيص مجموعات بيانات باهظة الثمن، أو استخراج المعلومات من مصادر غير موثوقة. اليوم، توفر واجهات برمجة التطبيقات الغذائية وصولاً منظمًا وبرمجيًا إلى قواعد بيانات الطعام الشاملة، مع بيانات عن المغذيات الكبيرة، والمغذيات الدقيقة، وأحجام الحصص، يتم تسليمها بصيغة 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!