Това е документация за версия 2 на API за база данни за храни. Ако трябва да видите какви са промените от версия 1, отидете на Дневник на промените
Този API ви предоставя инструменти за намиране на данни за храненето и диетата за генерични храни, пакетирани храни и ресторантни ястия. В допълнение, той използва NLP (Natural Language Processing), който позволява извличане на хранителни обекти от неструктуриран текст.
Покрити случаи на употреба
- Потърсете храна по ключова дума, име на храна или UPC/баркод
- Източници на хранителни факти за дадена храна, включително: макро и микро хранителни вещества, етикети на алергени, етикети за начин на живот и здраве
- Търсете храна по дадено количество хранителни вещества за 28 хранителни вещества
- Търсете храни с дадена марка
- С вградения контекст за регистриране на храни, той позволява NLP заявки за чат ботове и броячи на калории на естествен език
Заявки за база данни за храни
Искания за анализиране: https://api.edamam.com/api/food-database/v2/parser
Търсене на текст в база данни за храни
Точката за достъп на парсера се занимава с текстово търсене на храни, както и филтри за храните, като съдържание на специфични хранителни вещества или изключване на алергени
- Потърсете фраза или ключова дума, използвайки NLP, за да получите хранителни обекти от нея.
- Вземете основни хранителни факти и съставки за всяка храна
- Търсете храна по дадено количество хранителни вещества за 28 хранителни вещества
- Търсете храни с дадена марка
- С изграждането в контекста на регистриране на храни, той позволява заявки, които не съдържат количество, и предлага очаквани количества за тях.
Заявка за парсер
Ще използвате GET заявка за достъп до анализатора. За валидна заявка трябва да присъстват UPC или ingr
При търсене по ключова дума
app_id | да | Струна | Вашият 3-мащабен идентификатор на приложение |
app_key | да | Струна | Вашият 3-мащабен ключ за приложение (моля, обърнете внимание app_id/app_key са подредена двойка) |
ингр | да | Струна | Параметър за търсене на ключови думи, който да се намери в името на храната. Не се изисква, когато има upc |
upc | да | Струна | Валиден UPC код. Не се изисква, когато присъства ingr |
хранителен тип | не | Струна | Когато е зададено на тип хранене = регистриране, той включва функцията за регистриране на храни |
здраве | не | преброяване | Етикет за здравето: Един от параметрите за здравето api, изброени в таблицата Диети и етикети за здраве в края на тази документация. Например „без фъстъци“, „без дървесни ядки“, „без соя“, „без риба“, „без черупки“ |
калории | не | обхват | Форматът е калории = RANGE, където RANGE се заменя със стойността в kcal. RANGE е в едно от MIN +, MIN - MAX или MAX, където MIN и MAX са неотрицателни цели числа. Символът + трябва да бъде правилно кодиран. Примери: „калории = 100-300“ ще върне всички храни, с които има между 100 и 300 kcal на порция. |
страница | не | цяло число | Оттеглен параметър, вместо това вижте раздела Pagination. Поддръжката за този параметър скоро ще бъде премахната. Параметърът на страницата изброява резултатите от избраната страница (20 на страница). Първата страница е страница „0“. |
категория | не | низ | Категория като- генерични храни, генерични ястия, пакетирани храни, бързо хранене |
categoryLabel | не | низ | Тип на артикула като - храна или хранене. Храната обикновено е основният компонент на храненето |
Когато се използва контекст на регистриране на храни
Ако използвате контекстната функция за регистриране на храни, тя ще промени NLP отговора по следния начин
- Можете да изпращате артикули без количество. Едамам ще се опита да ги съпостави и да им присвои количество въз основа на очаквания размер на сервиране
- API ще върне като резултати само храни, готови за директна консумация - без сурово месо, сурови сухи стоки, като суров ориз например
- Edamam може да обработва само единични предмети и само две части от съставни предмети - т.е. „пиле“ или „ориз И пиле“. Уверете се, че URL адресът е кодиран правилно
Пагинация
За да получи следващата страница, потребителят на API трябва да последва връзката „next“ от раздела „_links“ в резултата JSON, който изглежда така:
Търсене по хранителен диапазон
Когато търсите по ключова дума, можете също да посочите хранителни граници, като добавите параметри в следната форма:
хранителни вещества [NTR] = ОБХВАТ където
NTR е един от: CA, CHOCDF, CHOLE, FAMS, FAPU, FASAT, FAT, FATRN, FE, FIBTG, FOLDFE, K, MG, NA, NIA, P, PROCNT, RIBF, ЗАХАР, THIA, TOCPHA, VITA_RAE, VITB12, VITB6A, VITC, VITD, VITK1 или ZN;
RANGE е в едно от MIN +, MIN - MAX или MAX, където MIN и MAX са неотрицателни цели числа.
Например:
хранителни вещества [CA] = 50 + означава минимум 50 mg калций, където ‘50 + ’трябва да бъде правилно кодиран като ‘50% 2B’
хранителни вещества [FAT] = 30 означава максимум 30g мазнини и
хранителни вещества [FE] = 5-10 означава желязо между 5 mg и 10 mg включително
Можете да комбинирате повече от един хранителен диапазон в заявките за търсене
CA | Калций | mg | ENERC_KCAL | Енергия | ккал |
CHOCDF | Въглехидрати | ж | NIA | Ниацин (B3) | mg |
ХОЛ | Холестерол | mg | P | Фосфор | mg |
ФАМИ | Мононенаситени | ж | PROCNT | Протеин | ж |
FAPU | Полиненаситени | ж | RIBF | Рибофлавин (B2) | mg |
FASAT | Наситени | ж | ЗАХАР | Захари | ж |
ДЕБЕЛ | Дебел | ж | ТАЗИ | Тиамин (B1) | mg |
FATRN | Транс | ж | ТОФФА | Витамин Е | mg |
FE | Желязо | mg | VITA_RAE | Витамин А | æg |
FIBTG | Фибри | ж | VITB12 | Витамин В12 | æg |
FOLDFE | Фолат (еквивалент) | æg | VITB6A | Витамин В6 | mg |
К | Калий | mg | VITC | Витамин Ц | mg |
MG | Магнезий | mg | VITD | Витамин D | æg |
NA | Натрий | mg | VITK1 | Витамин К | æg |
Примерна заявка за парсер
Като пример, да кажем, че искаме да намерим съвпадения в базата данни с храни за червена ябълка. След това трябва URL -код този низ. В този случай това означава просто да замените интервалите с% 20, така че става "червено% 20apple". Моля, обърнете внимание, че кавичките не са част от низа.
Ето пример за използване на curl:
ЗАБЕЛЕЖКА: Моля, уверете се, че използвате идентификационните данни, които сте създали за този точно API, тъй като те са специфични за приложението и плана. $ < >нотацията означава тип на входа и НЕ трябва да се включва в самата заявка.
С включена „регистрация на храна“:
Отговор на парсер
Списък на хранителните обекти, като всеки хранителен обект съдържа: kcal на 100gr, протеини на 100 грама, въглехидрати на 100 грама, марка на храната, ако храната е родова или брандидна, списък на съществуващите мерки за храната, етикет на съдържанието на храната |
Посоченият URL адрес не е намерен или не може да бъде извлечен |
Анализиран
foodId | низ | Уникален идентификатор на храна |
етикет | низ | Показване на етикет |
мярка | Измерете | Съдържа URI на мярката и етикет на дисплея |
хранителни вещества | Хранителни вещества | Количество ккал, протеини, мазнини, въглехидрати, ако е> 0 |
ЗАБЕЛЕЖКА: Разделът „анализиран“ на отговора съдържа директния резултат от обработката на заявката с НЛП с разбивка на количество/мярка/храна. След това тези данни се използват за получаване на резултатите от раздела „съвети“.
Съвети
foodId | низ | Уникален идентификатор на храна |
етикет | низ | Показване на етикет |
мярка | Измерете | Съдържа списък с наличните специфични URI на мярка за храна и етикети на дисплея |
хранителни вещества | Хранителни вещества | Количество ккал, протеини, мазнини, въглехидрати, ако е> 0 |
марка | низ | Например марка „Burger King“ за артикула „хамбургер“ |
категория | низ | Категория като: родови храни (не маркови основни съставки), родови ястия (не маркови родови ястия), пакетирани храни (артикули с баркод), бързи храни (верижни ресторанти) |
categoryLabel | низ | Тип артикул като храна или хранене. Храната обикновено е основният компонент на храненето |
образ | низ | Съдържа URL към изображение на храната, когато е налице |
сервиранеРазмери | Измерете | Съдържа информация за размера на сервиране на пакетирани храни, както е посочено на етикета на опаковката |
Примерен отговор на търсене на текст
* Заявки за хранителни данни
Искания за хранене: https://api.edamam.com/api/food-database/v2/nutrients
В отговор на вашата заявка за парсер получавате идентификатор на храна за всяко съвпадение на базата данни. Използвайки идентификатора на храната и URI на мярката, който парсерът предоставя, можете да направите заявка до точката за достъп на хранителни вещества. Точките за достъп до хранителни вещества връщат храненето с етикети за диета и здраве за дадено количество храна.
Заявка за хранителни вещества
Съдържанието на заявката трябва да бъде JSON обект със следния формат:
съставки | да | Съставка [] | съставка (масив от една съставка) |
Съставка
количество | да | номер | Количеството на съставката |
мяркаURI | да | Струна | един за измервателния URI, получен в отговора на анализатора |
foodId | да | Струна | Идентификационният номер на храната, получен в отговора на анализатора) |
Отговорът на анализатора за всяка храна съдържа всички специализирани мерки за тази храна. Например, ако една ябълка има специфична единица, наречена ‘slice’, тя ще дойде с отговора от API .
В допълнение към единиците, предоставени от API, Edamam поддържа практически всякакви мерки за тегло и обем за всички храни. Edamam не ги връща в API, тъй като прави отговора излишен и тромав.
Ето списък на стандартните поддържани мерки, които могат да се използват в допълнение към мерките, върнати с храната:
Унция | http://www.edamam.com/ontologies/edamam.owl#Measure_ounce |
Грам | http://www.edamam.com/ontologies/edamam.owl#Measure_gram |
Паунд | http://www.edamam.com/ontologies/edamam.owl#Measure_pound |
Килограм | http://www.edamam.com/ontologies/edamam.owl#Measure_kilogram |
Щипка | http://www.edamam.com/ontologies/edamam.owl#Measure_pinch |
Литър | http://www.edamam.com/ontologies/edamam.owl#Measure_liter |
Течна унция | http://www.edamam.com/ontologies/edamam.owl#Measure_fluid_ounce |
Галон | http://www.edamam.com/ontologies/edamam.owl#Measure_gallon |
Пинта | http://www.edamam.com/ontologies/edamam.owl#Measure_pint |
Кварта | http://www.edamam.com/ontologies/edamam.owl#Measure_quart |
Милилитър | http://www.edamam.com/ontologies/edamam.owl#Measure_milliliter |
Изпускайте | http://www.edamam.com/ontologies/edamam.owl#Measure_drop |
Купа | http://www.edamam.com/ontologies/edamam.owl#Measure_cup |
Супена лъжица | http://www.edamam.com/ontologies/edamam.owl#Measure_tablespoon |
Чаена лъжичка | http://www.edamam.com/ontologies/edamam.owl#Measure_teaspoon |
Дадена мярка може или не може да съдържа поле „квалифицирано“. Това поле съдържа възможни квалификатори на мярката за основната мярка, като всеки от тях има свой собствен URI. Например за елемента „ябълка“ една от мерките е „цяла“ с квалификатори „голям“, „малък“ и т.н.
Когато се подава заедно с URI на мярката, URI на квалификатора променя тежестта на основната мярка.
API връща хранителен анализ за посочената съставка.
Всяка храна се доставя със списък на специализирани единици, които принадлежат към нея. Например, ако една ябълка има конкретна единица, наречена слайс, тя ще дойде с отговора от API .
Примерна заявка за хранителни вещества
Ще използвате заявка POST за достъп до „хранителни вещества“.
Ето пример за използване на curl:
Това ще изпрати файла food.json за обработка.
Ето съдържанието на файла food.json:
Когато е наличен квалификатор за дадена мярка, той може да се използва по следния начин:
Отговор на хранителни вещества
200 ОК | application/json | FoodInfo | Обект, съдържащ брой порции (добив), общи калории за храната (калории), съдържание на хранителни вещества по видове хранителни вещества (totalNutrients, totalDaily), диета и класификация на здравето (dietLabels, healthLabels) |
404 Страницата не е намерена | текст/html | HTML | Посоченият URL адрес не е намерен или не може да бъде извлечен |
422 Необработен обект | текст/html | HTML | Не можа да се анализира заявката или да се извлече хранителната информация |
555 | текст/html | HTML | Текст с недостатъчно качество за правилна обработка |
Пример отговор на хранителни вещества
Нутирион
ури | низ | Онтологичен идентификатор |
калории | плувка | Обща енергия, kcal |
totalNutrients | NutrientInfo [*] | Общо хранителни вещества |
totalDaily | NutrientInfo [*] | % дневна стойност |
диетични етикети | преброяване [] | Диетични етикети: „балансиран“, „с високо съдържание на протеини“, „с високо съдържание на фибри“, „с ниско съдържание на мазнини“, „с ниско съдържание на въглехидрати“, „с ниско съдържание на натрий“ |
етикети за здраве | преброяване [] | Здравни етикети: „веган“, „вегетариански“, „без млечни продукти“, „ниско съдържание на захар“, „ниско съдържание на мазнини“, „без захар“, „без мазнини“, „без глутен“, „без пшеница ” |
За „Определения на хранителни етикети“ вижте таблицата в долната част на този документ
Хранителна информация
ури | низ | Онтологичен идентификатор |
етикет | низ | Показване на етикет |
количество | плувка | Количество на посочените единици |
мерна единица | низ | Единици |
Съставка
ури | низ | Онтологичен идентификатор |
количество | плувка | Количество на определената мярка |
мярка | Измерете | Измерете |
тегло | плувка | Общо тегло, g |
храна | Храна | Храна |
UPC или търсене на баркод
Позволява търсене на UPC/баркод номер, базиран на елемент.
Това е услуга, която ви позволява да подадете UPC или баркод и да намерите съвпадение за него в базата данни за храните.
app_id | да | Струна | Вашият 3-мащабен идентификатор на приложение |
app_key | да | Струна | Вашият 3-мащабен ключ за приложение (моля, обърнете внимание app_id/app_key са подредена двойка) |
upc | да * | номер | UPC или баркод номер за храната |
Ето пример за използване на curl:
„https://api.edamam.com/api/food-database/v2/parser?upc=&app_id=&app_key=“
Заявка за автоматично попълване
Edamam предоставя удобна функционалност за автоматично довършване, която може да се използва при търсене на съставки.
Път: http://api.edamam.com/auto-complete
Крайната точка връща предложения за подадения към нея текст. Ето един пример
Хранителните етикети се споделят както от рецепти, така и от храни. Те са назначени от Edamam въз основа на съставките, съдържащи се в етикета на храните за CPG храни и от основните съставки на всяка рецепта за рецепти.
Видове
Композитните типове са описани по отношение на тяхното JSON представяне.
В описанията се използват следните обозначения:
- integer, float и string означават съответно примитивните типове JavaScript число, float и string
- enum означава низово поле, което приема стойности само от предварително дефиниран диапазон (диапазонът е посочен, когато е необходимо)
- T [] означава масив от обекти от тип T
- T [*] означава обект (асоциативна карта), чието всяко поле (елемент) е от тип T .