All checks were successful
continuous-integration/drone/push Build is passing
5.1 KiB
5.1 KiB
Nutrition Service API Documentation
Overview
Nutrition Service предоставляет API для отслеживания питания, подсчета калорий и получения информации о продуктах питания через интеграцию с FatSecret API. Сервис позволяет пользователям контролировать свой рацион и отслеживать потребление воды.
Base URL: /api/v1/nutrition
Authentication
Все эндпоинты требуют JWT аутентификацию.
Headers:
Authorization: Bearer <jwt_token>
API Endpoints
🔍 Поиск продуктов
Найти продукты по названию
GET /api/v1/nutrition/foods?query=яблоко
Authorization: Bearer <token>
Параметры:
query(string, required): Поисковый запрос для поиска продуктовpage(number, optional): Номер страницы результатов, по умолчанию 1page_size(number, optional): Количество результатов на странице, по умолчанию 20
Response:
{
"results": [
{
"food_id": "123456",
"name": "Яблоко, сырое, с кожурой",
"brand": "",
"calories": 52,
"serving_size": "100г",
"nutrients": {
"carbohydrates": 13.8,
"protein": 0.3,
"fat": 0.2,
"fiber": 2.4
}
}
],
"total": 25,
"page": 1,
"page_size": 20
}
📝 Записи о питании
Добавить запись о питании
POST /api/v1/nutrition/entries
Authorization: Bearer <token>
Body:
{
"food_id": "123456",
"date": "2025-10-16",
"meal_type": "lunch",
"quantity": 1.0,
"serving_size": "100г",
"notes": "Красное яблоко"
}
Варианты типов приема пищи (meal_type):
breakfast- завтракlunch- обедdinner- ужинsnack- перекус
Получить записи о питании
GET /api/v1/nutrition/entries?date=2025-10-16
Authorization: Bearer <token>
Параметры:
date(string, optional): Дата в формате YYYY-MM-DDstart_date(string, optional): Начальная дата для получения записей за периодend_date(string, optional): Конечная дата для получения записей за периодmeal_type(string, optional): Фильтр по типу приема пищи
Удалить запись о питании
DELETE /api/v1/nutrition/entries/{entry_id}
Authorization: Bearer <token>
💧 Отслеживание воды
Добавить запись о потреблении воды
POST /api/v1/nutrition/water
Authorization: Bearer <token>
Body:
{
"date": "2025-10-16",
"amount_ml": 250,
"time": "12:30:00"
}
Получить записи о потреблении воды
GET /api/v1/nutrition/water?date=2025-10-16
Authorization: Bearer <token>
📊 Сводки и статистика
Получить дневную сводку по питанию
GET /api/v1/nutrition/daily-summary?date=2025-10-16
Authorization: Bearer <token>
Response:
{
"date": "2025-10-16",
"total_calories": 1578,
"total_carbohydrates": 175.3,
"total_proteins": 78.2,
"total_fats": 52.8,
"total_water": 1200,
"entries": [
{
"id": 123,
"food_name": "Яблоко, сырое, с кожурой",
"meal_type": "lunch",
"calories": 52,
"quantity": 1.0,
"serving_size": "100г"
}
]
}
Получить недельную аналитику
GET /api/v1/nutrition/weekly-summary?start_date=2025-10-10
Authorization: Bearer <token>
Интеграция с FatSecret API
Сервис использует FatSecret API для получения информации о питательной ценности продуктов. Ключи API хранятся в конфигурации сервера и не требуют дополнительной настройки со стороны клиента.
Примеры использования
JavaScript
// Пример поиска продуктов
async function searchFoods(query) {
const response = await fetch(`http://localhost:8000/api/v1/nutrition/foods?query=${query}`, {
headers: { 'Authorization': `Bearer ${token}` }
});
return response.json();
}
// Пример добавления записи о питании
async function addNutritionEntry(entryData) {
const response = await fetch('http://localhost:8000/api/v1/nutrition/entries', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`
},
body: JSON.stringify(entryData)
});
return response.json();
}