API (Application Programming Interface) – это набор инструментов и протоколов, которые позволяют различным программам взаимодействовать друг с другом. С помощью API можно получить доступ к функциям и данным другого приложения, сервиса или библиотеки.
В этом руководстве мы рассмотрим основные принципы работы с API и приведем пример использования API на Python с библиотекой requests.
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
}
Ноутбук, не требующий дополнительной настройки на момент написания статьи, можно скачать здесь.
© Лена Капаца. Все права защищены.