Данное приложение предоставляет API для получения и хранения информации о погоде по указанным параметрам.
Для запуска приложения выполните следующие шаги:
- Установите зависимости:
poetry install poetry shell
- Создайте файл
.envи укажите API-ключ для внешнего сервиса погоды:API_KEY=your_api_key_here - Запустите сервер FastAPI:
uvicorn main:app --reload
После запуска API будет доступно по адресу: http://127.0.0.1:8000
GET /
Возвращает приветственное сообщение.
Ответ:
{
"message": "Hi! This app will help you get weather information."
}GET /info
Возвращает информацию о версии сервиса, его названии и авторе.
Ответ:
{
"version": "0.1.0",
"service": "weather",
"author": "KhudyakovGleb"
}GET /info/allresponses
Возвращает все сохранённые записи о погоде. Если данных нет, возвращает ошибку 404.
Ответ (пример):
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"geo_place": "Russia, Saint-Petersburg",
"date_start": "2025-02-19",
"date_end": "2025-02-20",
"temp_value": [2.5, 3.1, 4.0],
"median_value": 3.1,
"avg_value": 3.2,
"min_value": 2.5,
"max_value": 4.0
}GET /info/responce/{item_id}
Возвращает данные о погоде по указанному ID. Если ID отсутствует, возвращает ошибку 404.
Ответ (пример):
{
"geo_place": "Russia, Saint-Petersburg",
"date_start": "2025-02-19",
"date_end": "2025-02-20",
"temp_value": [2.5, 3.1, 4.0],
"median_value": 3.1,
"avg_value": 3.2,
"min_value": 2.5,
"max_value": 4.0
}GET /info/weather
Позволяет получить информацию о погоде для указанного местоположения и временного диапазона, вычислить статистические параметры и сохранить результат в хранилище.
Параметры запроса:
geo_place(str) – Местоположение (например, "Russia, Saint-Petersburg")date_start(str) – Дата начала периода (формат: YYYY-MM-DD)date_end(str) – Дата окончания периода (формат: YYYY-MM-DD)
Ответ (пример):
{
"data": {
"weather_stats": {
"average": 3.2,
"median": 3.1,
"min": 2.5,
"max": 4.0
}
},
"service": "weather"
}DELETE /info/responcedel/{item_id}
Удаляет запись о погоде по указанному ID. Если ID отсутствует, возвращает ошибку 404.
Ответ:
{
"message": "Deleted successfully"
}Используются для обработки температурных данных:
calc_mean(temps: list) -> float– вычисляет среднюю температуруcalc_median(temps: list) -> float– вычисляет медиану температурыcalc_min(temps: list) -> float– находит минимальную температуруcalc_max(temps: list) -> float– находит максимальную температуру
get_temp_data(API_KEY, insert_data: GetWeatherInsert) -> Response– запрашивает данные о погоде с Visual Crossing Weather API.
- API использует
temp_storageдля хранения полученных данных о погоде. - Запросы к внешнему API требуют наличия
API_KEYв.envфайле. - Даты должны быть переданы в формате
YYYY-MM-DD.
Автор: KhudyakovGleb