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.

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:
| 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:
| 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:
- 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.
- 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.
- 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
| 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.
| 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” ”” |