Документація API бази даних про їжу

Це документація до версії 2 API бази даних про їжу. Якщо вам потрібно побачити, які зміни у версії 1, перейдіть до Журнал змін

бази

Цей API надає вам інструменти для пошуку даних про харчування та дієту для загальних продуктів, упакованих продуктів та страв у ресторанах. Крім того, в ньому використовується NLP (обробка природних мов), що дозволяє витягувати харчові об'єкти з неструктурованого тексту.

Покриті випадки використання

  • Шукайте їжу за ключовим словом, назвою їжі або UPC/штрих-кодом
  • Визначення фактів харчування для даної їжі, включаючи: макро- та мікроелементи, маркування алергенів, етикетки способу життя та здоров’я
  • Шукайте їжу за даною кількістю поживних речовин для 28 поживних речовин
  • Шукайте продукти харчування певної марки
  • Завдяки вбудованому контексту реєстрації продуктів, він дозволяє запити NLP для чатових ботів та лічильників калорій на природній мові

Запити бази даних про їжу

Розбір запитів: https://api.edamam.com/api/food-database/v2/parser

Пошук тексту по базі даних про їжу

Точка доступу синтаксичного аналізатора здійснює пошук тексту продуктів, а також фільтрів для продуктів, таких як вміст поживних речовин або виключення алергенів.

  • Шукайте фразу або ключове слово за допомогою NLP, щоб отримати з них харчові сутності.
  • Отримайте основні факти харчування та інгредієнти для кожної їжі
  • Шукайте їжу за даною кількістю поживних речовин для 28 поживних речовин
  • Шукайте продукти харчування певної марки
  • Завдяки побудові в контексті реєстрації продуктів харчування, він дозволяє надсилати запити, які не містять кількості, і пропонувати очікувані кількості для них.

Запит аналізатора

Ви отримаєте запит GET для доступу до аналізатора. Для дійсного запиту повинні бути присутніми або UPC, або ingr

При пошуку за ключовим словом

Параметр Обов’язковий тип Опис
app_id так Рядок Ваш 3-масштабний ідентифікатор програми
app_key так Рядок Ваш ключ програми 3scale (зверніть увагу, app_id/app_key - це впорядкована пара)
інгр так Рядок Параметр пошуку за ключовим словом, який можна знайти в назві їжі. Не потрібно, коли присутній upc
upc так Рядок Дійсний код UPC. Не потрібно, коли присутній ingr
дієтичний тип ні Рядок Коли встановлено значення типу харчування = реєстрація, вона включає функцію реєстрації їжі
здоров'я ні перерахування Етикетка стану здоров’я: Один із параметрів API здоров’я, зазначений у таблиці Дієта та етикетки здоров’я в кінці цієї документації. Наприклад, "без арахісу", "без горіхів", "без сої", "без риби", "без молюсків"
калорій ні діапазон Формат - калорії = RANGE, де RANGE замінюється значенням у ккал. RANGE знаходиться в одному з MIN +, MIN - MAX або MAX, де MIN і MAX - невід’ємні цілі числа. Символ + потрібно правильно закодувати. Приклади: “калорії = 100-300” повертає всі продукти, які містять від 100 до 300 ккал на порцію.
сторінки ні ціле число Застарілий параметр, натомість див. Розділ "Розбиття сторінок". Підтримку цього параметра незабаром буде видалено. Параметр сторінки містить результати із вибраної сторінки (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, SUGAR, THIA, TOCPHA, VITA_RAE, VITB12, VITB6A, VITC, VITD, VITK1 або ZN;

RANGE знаходиться в одному з MIN +, MIN - MAX або MAX, де MIN і MAX - невід’ємні цілі числа.

Наприклад:
поживні речовини [CA] = 50 + означає мінімум 50 мг кальцію, де значення «50+» має бути належним чином закодовано як «50% 2B»
поживні речовини [FAT] = 30 означає максимум 30 г жиру та
поживні речовини [ІП] = 5-10 означає залізо від 5 мг до 10 мг включно

Ви можете поєднати більше одного діапазону поживних речовин у запитах на пошук

Код назви NTR Одиниця виміру NTR Код назви
CA Кальцій мг ENERC_KCAL Енергія ккал
CHOCDF Вуглеводи g NIA Ніацин (B3) мг
ХОЛ Холестерин мг P Фосфор мг
ВІДОМІ Мононенасичений g ПРОКНТ Білок g
ФАПУ Поліненасичені g RIBF Рибофлавін (В2) мг
FASAT Насичений g ЦУКР Цукри g
ТУР Жир g ТІА Тіамін (B1) мг
FATRN Транс g ТОФФА Вітамін Е мг
ІП Залізо мг VITA_RAE Вітамін А æg
FIBTG Клітковина g VITB12 Вітамін В12 æg
FOLDFE Фолат (еквівалент) æg VITB6A Вітамін В6 мг
К Калій мг VITC Вітамін С мг
MG Магній мг VITD Вітамін D æg
НС Натрію мг ВІТК1 Вітамін К æg

Приклад запиту синтаксичного аналізатора

Як приклад, скажімо, ми хочемо знайти збіги в базі даних про їжу для червоного яблука. Тоді нам потрібно URL -код цей рядок. У цьому випадку це означає просто замінити пробіли на% 20, тому він стає "червоним% 20apple". Зверніть увагу, що лапки не є частиною рядка.
Ось приклад використання curl:

ПРИМІТКА. Будь ласка, переконайтеся, що ви використовуєте облікові дані, які ви створили для цього точного API, оскільки вони стосуються додатка та плану. $ < >Позначення означає тип введення і НЕ повинно включатись у сам запит.

З увімкненим режимом "реєстрація продуктів":

Відповідь аналізатора

Код статусу HTTP Опис 200 Добре 404 Не знайдено
Список харчових продуктів, кожен із яких містить: ккал на 100гр, білок на 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 так Рядок Ідентифікатор їжі, отриманий у відповіді аналізатора)

Відповідь аналізатора на кожну їжу містить усі спеціалізовані заходи щодо цієї їжі. Наприклад, якщо у яблука є конкретна одиниця з назвою «зріз», воно надійде із відповіддю з 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 Текст недостатньо якісний для правильної обробки

Приклад відповіді поживних речовин

Нутіріон

опис типу поля
урі рядок Ідентифікатор онтології
калорій плавати Загальна енергія, ккал
всього Поживні речовини Інформація про поживні речовини [*] Загальна кількість поживних речовин
totalDaily Інформація про поживні речовини [*] % добового значення
дієта етикетки перерахувати [] Дієтичні етикетки: «збалансований», «з високим вмістом білка», «з високим вмістом клітковини», «з низьким вмістом жиру», «з низьким вмістом вуглеводів», «з низьким вмістом натрію»
ярлики здоров’я перерахувати [] Етикетки охорони здоров’я: “веганські”, “вегетаріанські”, “без молочних продуктів”, “з низьким вмістом цукру”, “з низьким вмістом жиру”, “без цукру”, “без жиру”, “без глютену”, “без пшениці "

Докладнішу інформацію щодо „Визначень харчових етикеток” див. У таблиці внизу цього документа

Інформація про поживні речовини

опис типу поля
урі рядок Ідентифікатор онтології
етикетці рядок Відобразити ярлик
кількість плавати Кількість зазначених одиниць
од рядок Одиниці

Інгредієнт

Тип поля Опис
урі рядок Ідентифікатор онтології
кількість плавати Кількість зазначеної міри
міра Виміряйте Виміряйте
вага плавати Загальна вага, г.
їжа Їжа Їжа

UPC або пошук штрих-коду

Дозволяє здійснювати пошук товару на основі UPC/номера штрих-коду.

Це послуга, яка дозволяє подати UPC або штрих-код та знайти відповідність йому в базі даних про продукти харчування.

Параметр Обов’язковий тип Опис
app_id так Рядок Ваш 3-масштабний ідентифікатор програми
app_key так Рядок Ваш ключ програми 3scale (зверніть увагу, 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 .