Documentația API pentru analiză nutrițională

Acest API acoperă toate cazurile de utilizare cheie legate de prelucrarea limbajului natural al rețetei și textului alimentelor și analiza nutriției. API folosește NLP (Natural Language Processing), care permite extragerea entităților alimentare din text nestructurat.

conținut scăzut

Cazuri de utilizare acoperite

  • Analiza completă a rețetelor alimentare în timp real - extragerea entității, măsurarea și extragerea cantității cu calculul nutriției aplicabile pentru rețetă și etichetele de sănătate și diete aplicabile. În cele din urmă, ajustează cantitatea pentru anumite ingrediente pentru a ține cont de cantitatea de gătit. De exemplu, calculează absorbția uleiului pentru rețetele prăjite, exclude solidele din rețetele din bulion și bulion, calculează absorbția marinată pentru marinate și multe altele.
  • Extragerea entităților alimentare cu măsuri și cantități din text nestructurat
  • Utilizarea în roboții de chat care transcriu textul natural.

Analiza completă a rețetei

Cale: https://api.edamam.com/api/nutrition-details

Returnează informații nutriționale pe baza unei cereri POST a conținutului rețetei

Următorii parametri fac parte din adresa URL a solicitării POST:

Parametru necesar Tip Descriere
app_id da Şir ID-ul aplicației dvs. pe 3 scări
app_key da Şir Cheia aplicației dvs. pe 3 scări
forta Nu Forțează reevaluarea rețetei. Valoarea, dacă există, este ignorată.

Cerere de analiză a rețetei

Veți utiliza o solicitare POST pentru a trimite conținutul rețetei - mai precis titlul rețetei și lista ingredientelor.

Răspunsul pe care îl va returna API va conține analize nutriționale pentru rețetă pe baza informațiilor furnizate.

Conținutul cererii trebuie să fie un obiect JSON cu următorul format:

Nume Descriere obligatorie
titlu da nume comun al rețetei
ingr da ingrediente (matrice de șiruri)
url Nu adresa URL a locației rețetei
rezumat Nu o scurtă descriere a rețetei
Randament Nu numar de portii *
ttime Nu timpul total pentru pregătire
img Nu link imagine (absolut)
prep Nu instrucțiuni de pregătire (text gratuit)
bucătărie Nu tip de bucătărie
tip de masă Nu tipul mesei
fel de vase Nu tipul de fel de mâncare

* În timp ce rezultatul nu este o intrare necesară dacă este prezent, ar trebui să aibă sens din perspectiva consumatorului. Greutatea prea mare sau prea mică pe porție va afecta nutriția pe porție, iar rețeta nu va trece de verificarea noastră automată a calității. Dacă se întâmplă acest lucru, API va afișa o eroare 555.
Dacă nu se specifică randamentul, Edamam va calcula randamentul preconizat al rețetei.

Cererea trebuie să conțină antetul

Rețete noi, retrimiterea și licențierea contează

Odată ce trimiteți o rețetă prin intermediul API, începeți să plătiți Edamam o taxă lunară de licențiere pentru fiecare rețetă analizată nouă. Cu toate acestea, uneori este posibil să fie nevoie să reîmprospătați datele nutriționale pentru o rețetă deja trimisă, în cazul în care ați pierdut datele nutriționale, de exemplu. Trimiterea directă a unei rețete va fi considerată ca analizând o rețetă nouă și vi se va percepe din nou taxa de licențiere pentru informațiile nutriționale. Pentru a evita faptul că am implementat un sistem bazat pe mecanismul Etag al HTTP.

În primul rând, fiecare rețetă procesată cu succes va returna, de asemenea, o etichetă în antetul de răspuns ETag. Această valoare trebuie păstrată împreună cu rețeta. Apoi, atunci când retrimiteți rețeta, ar trebui să includeți valoarea în antetul cererii If-None-Match.

Există trei rezultate posibile:

  1. Folosiți deja cea mai actualizată versiune a datelor Edamam. Adică, aveți deja cea mai nouă versiune a informațiilor nutriționale. În acest caz, sistemul va returna codul de stare HTTP 304 - Nemodificat. Rețineți că puteți forța reevaluarea în acest caz (de exemplu, dacă ați pierdut datele) prin trecerea parametrului forță. Edamam va ști că plătiți deja licența pentru informațiile nutriționale pentru această rețetă și nu veți fi taxat de două ori.
  2. Ne-am actualizat baza de date, rețeta este procesată din nou. În acest caz, veți primi datele nutriționale posibil actualizate, precum și antetul ETag actualizat. Ar trebui să stocați această nouă valoare și să o utilizați pentru retrimiteri ulterioare.
  3. Rețeta pe care ați trimis-o a fost modificată de dvs. Deoarece hash-ul ETag conține o „semnătură” pentru conținutul rețetei, sistemul va răspunde cu codul de stare HTTP 409 - Conflict. În cazul în care ați folosit ETag greșit, puteți utiliza codul corect sau, dacă rețeta s-a schimbat, puteți retrimite rețeta ca una nouă (adică fără a trimite antetul If-None-Match).

Exemplu de număr de licențe. Ați analizat 100 de rețete în prima lună, 50 în a doua lună și 1 în a treia lună. Prima lună veți plăti o taxă de licențiere pentru nutriția a 100 de rețete, a doua lună pentru 150 și a treia pentru 151. Dacă nu mai analizați mai multe rețete după a treia lună, veți plăti o taxă de licențiere pentru nutriția pentru în total, 151 de rețete în fiecare lună după aceea.

Exemplu de cerere POST

Iată un exemplu folosind curl:

Aceasta va trimite fișierul recipe.json pentru procesare.

Iată conținutul fișierului recipe.json:

Raspuns

Cod de stare HTTP Tip de conținut Tip Descriere
200 OK aplicație/json Reţetă Obiect de rețetă care conține numărul de porții (randament), calorii totale pentru rețetă (calorii), conținutul de nutrienți în funcție de tipul de nutrienți (totalNutrients, totalDaily), clasificare dietă și sănătate (dietLabels, healthLabels)
404 Nu a fost gasit text/html HTML Adresa URL specificată nu a fost găsită sau nu a putut fi recuperată
422 Entitate neprocesabilă text/html HTML Nu am putut analiza rețeta sau extrage informațiile nutriționale
555 text/html HTML Rețetă cu o calitate insuficientă pentru a procesa corect

Exemplu de răspuns

Aici puteți descărca un eșantion de răspuns cu date nutriționale la nivel de ingredient

Reţetă

Notă: Doar un subset de câmpuri poate fi prezent, în funcție de planul API prin care se obțin datele rețetei. Consultați descrierea specifică a planului pentru detalii.

descrierea tipului de câmp
uri şir Identificator de ontologie
Randament întreg Numărul de porții
calorii pluti Energia totală, kcal
nutrienți totali NutrientInfo [*] Nutrienți totali
totalZilnic NutrientInfo [*] % valoare zilnica
etichete dietetice enum [] Etichete dietetice: „echilibrat”, „bogat în proteine”, „bogat în fibre”, „cu conținut scăzut de grăsimi”, „cu conținut scăzut de carbohidrați”, „cu conținut scăzut de sodiu”
HealthLabels enum [] Etichete de sănătate: „vegan”, „vegetarian”, „fără lactate”, „cu conținut scăzut de zahăr”, „abs cu conținut scăzut de grăsimi”, „conștient de zahăr”, „fără grăsimi”, „fără gluten”, „fără grâu” ””