API - Лена Капаца
API by Лена Капаца May 18, 2024 Основы

API (Application Programming Interface) – это набор инструментов и протоколов, которые позволяют различным программам взаимодействовать друг с другом. С помощью API можно получить доступ к функциям и данным другого приложения, сервиса или библиотеки.

В этом руководстве мы рассмотрим основные принципы работы с API и приведем пример использования API на Python с библиотекой requests.

Типы API

1. REST (Representational State Transfer): Это наиболее распространенный тип API, использующий HTTP-запросы для получения и отправки данных. Основные методы REST API включают GET (для получения данных), POST (для отправки данных), PUT (для обновления данных) и DELETE (для удаления данных).
2. SOAP (Simple Object Access Protocol): Это протокол обмена сообщениями, который используется для обмена структурированными данными в виде XML.
3. GraphQL: Это язык запросов для API, который позволяет клиенту точно указывать, какие данные ему нужны, и получать их в одном запросе.

- Endpoint (конечная точка): URL-адрес, по которому можно получить доступ к ресурсу API.
- Request (запрос): Сообщение, отправляемое клиентом серверу. Содержит метод, URL, заголовки и, возможно, тело.
- Response (ответ): Сообщение, отправляемое сервером клиенту в ответ на запрос. Содержит статусный код, заголовки и, возможно, тело.

Рассмотрим пример использования публичного API для получения текущей погоды. Мы будем использовать OpenWeatherMap API.

Для доступа к OpenWeatherMap API необходимо зарегистрироваться на сайте [OpenWeatherMap](https://openweathermap.org/) и получить API ключ.

Библиотека requests упрощает работу с HTTP-запросами в Python. Установим ее с помощью pip:


!pip install requests

Теперь напишем функцию получения текущей погоды в указанном городе:


import requests

def get_weather(city, api_key):
    base_url = "http://api.openweathermap.org/data/2.5/weather"
    params = {
        'q': city,
        'appid': api_key,
        'units': 'metric'  # Используем метрическую систему для получения температуры в градусах Цельсия
    }
    
    response = requests.get(base_url, params=params)
    
    if response.status_code == 200:
        data = response.json()
        main = data['main']
        weather = data['weather'][0]
        print(f"Current weather in {city}:")
        print(f"Temperature: {main['temp']}°C")
        print(f"Humidity: {main['humidity']}%")
        print(f"Description: {weather['description']}")
    else:
        print(f"Failed to get weather data: {response.status_code}")


city = input("Enter city name: ")
api_key = 'YOUR_API_KEY'  # Замените YOUR_API_KEY на ваш реальный API ключ
get_weather(city, api_key)


API ответит:

 

{
  "coord": {
    "lon": 10.99,
    "lat": 44.34
  },
  "weather": [
    {
      "id": 501,
      "main": "Rain",
      "description": "moderate rain",
      "icon": "10d"
    }
  ],
  "base": "stations",
  "main": {
    "temp": 298.48,
    "feels_like": 298.74,
    "temp_min": 297.56,
    "temp_max": 300.05,
    "pressure": 1015,
    "humidity": 64,
    "sea_level": 1015,
    "grnd_level": 933
  },
  "visibility": 10000,
  "wind": {
    "speed": 0.62,
    "deg": 349,
    "gust": 1.18
  },
  "rain": {
    "1h": 3.16
  },
  "clouds": {
    "all": 100
  },
  "dt": 1661870592,
  "sys": {
    "type": 2,
    "id": 2075663,
    "country": "IT",
    "sunrise": 1661834187,
    "sunset": 1661882248
  },
  "timezone": 7200,
  "id": 3163858,
  "name": "Zocca",
  "cod": 200
}                        
                       

Ноутбук, не требующий дополнительной настройки на момент написания статьи, можно скачать здесь.

© Лена Капаца. Все права защищены.