Това е документация за версия 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 включително

Можете да комбинирате повече от един хранителен диапазон в заявките за търсене

NTR кодово наименование Единица NTR кодово име
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, тъй като те са специфични за приложението и плана. $ < >нотацията означава тип на входа и НЕ трябва да се включва в самата заявка.

С включена „регистрация на храна“:

Отговор на парсер

HTTP код на състоянието Описание 200 ОК 404 Страницата не е намерена
Списък на хранителните обекти, като всеки хранителен обект съдържа: 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, тъй като прави отговора излишен и тромав.

Ето списък на стандартните поддържани мерки, които могат да се използват в допълнение към мерките, върнати с храната:

Име на URI
Унция 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:

Когато е наличен квалификатор за дадена мярка, той може да се използва по следния начин:

Отговор на хранителни вещества

HTTP код на състоянието Тип тип съдържание Описание
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 .