REST API – один из самых распространенных способов обмена данными между приложениями через интернет. В этой статье мы разберем, что такое API и зачем он нужен, что означает термин REST и какие принципы лежат в его основе, как работают основные типы запросов (GET, POST, PUT, DELETE), а также покажем на реальном примере (получение данных о погоде), как можно протестировать REST API с помощью инструмента Postman. Мы постараемся объяснить все простыми словами, с понятными аналогиями и примерами, чтобы даже без технического бэкграунда вы уловили суть.
Что такое API и зачем он нужен
API (Application Programming Interface, программный интерфейс приложения) – это способ, который позволяет двум программам или сервисам общаться друг с другом и обмениваться данными. Проще говоря, API выступает посредником между разными программами: одна программа отправляет запрос через API, другая – получает этот запрос, выполняет необходимые действия и возвращает ответ. При этом разработчикам, использующим API, не нужно знать, как именно реализованы внутренние механизмы той программы, к которой они обращаются – достаточно понимать, как спросить и что ожидать в ответ.
Представьте аналогию с рестораном: API – это подобие официанта в ресторане. У вас есть меню (набор доступных действий или данных), а кухня – это внутренняя система, где готовится блюдо (выполняются необходимые вычисления). Вы делаете заказ официанту – он передает ваш запрос на кухню, где повара готовят блюдо, затем официант приносит результат вам на стол. Причем официанту не нужно знать рецепты блюд или детали работы кухни – важно лишь правильно передать ваш заказ и принести обратно то, что вы запросили. Точно так же и API: одна программа (клиент) обращается с запросом к другой программе (серверу) через API, а API передает запрос и возвращает ответ.
Зачем нужен API? Он позволяет безопасно и стандартизованно использовать функции и данные одного приложения в другом. Например, многие сайты позволяют авторизоваться через учетную запись Google или ВКонтакте – это реализовано посредством API: сайт отправляет запрос в API социальной сети, получает подтверждение и информацию о вашем профиле. Другой пример – на сайте можно увидеть встроенную карту с отметкой местоположения (скажем, офис компании). Этот сайт не «знает», как строить карты – он просто использует API картографического сервиса (например, Google Maps API), который по запросу возвращает готовую карту для отображения. Благодаря API разные сервисы и приложения могут интегрироваться друг с другом: от обмена сообщениями между мессенджерами и играми, до платежей через агрегаторы, отображения погоды из внешнего сервиса, и т.д. И все это – без необходимости «заглядывать под капот» чужой системы.
Разбор термина REST и его принципов
REST (сокр. от Representational State Transfer, дословно «передача состояния представления»)
– это стиль архитектуры, набор правил для создания API на основе протокола HTTP. Говоря проще, REST определяет как должным образом строить URL-адреса и формировать запросы, чтобы клиент и сервер понимали друг друга. Если API соответствует принципам REST, его называют RESTful API. Термин REST предложил в 2000 году Рой Филдинг (один из создателей протокола HTTP) в своей диссертации. Сегодня REST – самый распространенный подход при создании веб-API, так как он идеально заточен под работу через HTTP и делает интерфейс понятным и единообразным.
Главная идея REST – представить все данные сервиса в виде ресурсов, у каждого из которых есть свой адрес (URL). Для работы с ресурсами используются стандартные методы HTTP (о них чуть ниже). Такой подход унифицирует программные интерфейсы и делает их простыми для понимания и использования. У REST нет жесткого стандарта (это скорее набор принципов), но если при создании API соблюдать эти принципы, получится гибкий и понятный интерфейс. Перечислим ключевые принципы REST и кратко их поясним:
- Клиент-серверная архитектура (Client-Server) – Клиент (обычно фронтенд или приложение) и сервер (бэкэнд, база данных) четко разделены. Клиент отвечает за интерфейс пользователя, сервер – за хранение данных и логику. Это позволяет развивать их независимо: например, можно заменить интерфейс (клиент) или масштабировать сервер, не затрагивая другую сторону
- Отсутствие состояния (Stateless) – Каждый запрос клиента не зависит от предыдущего и содержит всю информацию, необходимую для обработки на сервере. Сервер не хранит «контекст» между запросами. Представьте, что после каждого заказа официант сразу забывает о вас – в следующий раз нужно снова сообщить все детали заказа. В контексте API это означает, что, например, авторизовавшись, ваш клиентское приложение должно отправлять токен авторизации каждым запросом, потому что сервер сам по себе не помнит, кто вы и вошли ли вы в систему. Stateless-архитектура упрощает масштабирование и делает систему более надежной (меньше зависимостей от предыдущих действий).
- Кэшируемость (Cacheable) – Ответы сервера могут кэшироваться (сохраняться) на некоторое время, чтобы при повторных запросах не нагружать сервер повторной обработкой одинаковых данных. В самом запросе или ответе обычно указывается, можно ли его кэшировать и на какой срок. Благодаря кэшу, например, если вы один раз запросили курс валют через API, приложение может какое-то время использовать сохраненный результат, а не запрашивать его заново каждую секунду.
- Единообразие интерфейса (Uniform Interface) – Взаимодействие с разными ресурсами происходит единообразно, по общим правилам. Во-первых, у всех ресурсов понятные URL (например, /users/123 – пользователь с ID 123). Во-вторых, одни и те же методы используются для одних и тех же действий (GET для получения, POST для создания и т.д.). В-третьих, формат данных в запросах и ответах стандартизован (например, сервер всегда возвращает данные в формате JSON). Благодаря этому, разработчик, изучив один RESTful API, легко поймет и другой – потому что «правила игры» схожи.
(Существуют и другие принципы REST, такие как многоуровневая система (Layered System) и код по запросу (Code on Demand), но в контексте базового понимания REST их можно опустить. Важно помнить, что REST – это не конкретная технология, а стиль проектирования API. При его соблюдении, интерфейс получается предсказуемым, простым в использовании и легко расширяемым.)
Как работают запросы: GET, POST, PUT, DELETE (примеры)
REST API работает поверх протокола HTTP, а HTTP предусматривает различные методы запросов – по сути, виды действий, которые клиент хочет выполнить с ресурсом. Четыре самых распространенных метода в REST API это: GET, POST, PUT и DELETE. Каждый из них соответствует определенному действию:
- GET (англ. «получить») – используется для получения/чтения данных. GET-запросы не изменяют данные на сервере, а только запрашивают информацию. Например, когда вы заходите на страницу профиля в соцсети, ваше приложение отправляет GET-запрос к API сервера профилей, чтобы получить данные о пользователе и отобразить их. Аналогия: GET – это как открыть книгу в библиотеке и прочитать информацию из нее, не внося никаких изменений. (В терминах REST каждый «ресурс» – как книга, а GET позволяет эту «книгу» взять почитать.)
- POST (англ. «отправить», обычно для создания новых данных) – этот метод чаще всего используется, чтобы добавить новый ресурс на сервер. Например, вы заполняете форму регистрации и нажимаете "Зарегистрироваться" – приложение отправляет POST-запрос с вашими данными (логин, пароль, email) к API сервера, чтобы создать новую учетную запись. Другой пример – публикация нового поста в блоге или отправка сообщения: клиент посылает POST-запрос с содержимым поста, и сервер создает новую запись в базе данных. Аналогия: POST – как добавить новую книгу в библиотеку: вы приносите новую книгу библиотекарю, и он ставит ее на полку (сервер сохраняет новые данные).
- PUT (англ. «положить») – метод для обновления существующих данных (или полного замещения). Обычно PUT-запрос отправляется на конкретный URL ресурса и содержит обновленную версию данных. Сервер по этому запросу заменяет текущую информацию ресурса новой. Например, если вы редактируете свой профиль (меняете аватар или email), приложение отправляет PUT-запрос на API профилей с вашими обновленными данными, и сервер сохраняет их вместо старых. Аналогия: PUT – как заменить книгу в библиотеке: вы даете библиотекарю исправленную версию книги, и он полностью заменяет старую версию на новую на полке.
- DELETE (англ. «удалить») – как понятно из названия, используется чтобы удалить ресурс. При получении DELETE-запроса сервер удалит указанный ресурс (например, запись, файл, элемент). Например, нажимая «удалить фотографию» в приложении галереи, клиент отправляет DELETE-запрос к API, и сервер удаляет фото из базы данных и хранилища. Аналогия: DELETE – как убрать книгу с полки в архив или выбросить: библиотекарь по вашему запросу удаляет книгу из каталога и с полки, и она больше не доступна читателям.
Важно понимать, что REST API обычно обменивается данными в формате JSON (JavaScript Object Notation) или XML. JSON сейчас наиболее популярен: это текстовый формат, в котором данные представлены в виде структур «ключ: значение», похожем на словарь или таблицу. Например, ответ на GET-запрос может выглядеть так (условно):
{
"name": "Alice",
"age": 30
}
Здесь сервер вернул объект с ключами "name" и "age", указывающими имя и возраст пользователя. Клиент (приложение) получил этот JSON и уже на своей стороне решает, как его использовать – например, показать «Имя: Alice, Возраст: 30» на экране. Формат JSON хорош тем, что легко читается человеком и в то же время удобно обрабатывается программой.
Использование Postman для тестирования API (пошаговое руководство)
Когда мы знаем, что и как запрашивать, нужно научиться эти запросы отправлять. Конечно, программисты пишут код, чтобы приложения общались через API автоматически. Но для обучения и тестирования удобно использовать специальные инструменты. Postman – один из самых популярных инструментов для работы с API. По сути, это графический HTTP-клиент, в котором можно вручную формировать и отправлять запросы к любому URL и смотреть ответы. В отличие от утилиты командной строки curl, Postman имеет удобный графический интерфейс, поэтому легко осваивается даже новичками.
Шаги для установки и первого запроса в Postman:
- Установите Postman. Скачать программу можно с официального сайта для Windows, macOS или Linux . Установка стандартная. После запуска Postman предложит войти в аккаунт – можно зарегистрироваться бесплатно (это нужно для синхронизации запросов в облаке, но не обязательно для базового использования).
- Создайте новый запрос. В главном окне Postman нажмите кнопку «+» (New Request), чтобы открыть новую вкладку для запроса. Справа от неё вы увидите выпадающий список для выбора метода, поле для ввода URL и кнопку Send.
- Выберите метод запроса. По умолчанию стоит GET. Если вы собираетесь просто получить данные (как в нашем примере с погодой ниже), оставьте GET. Postman поддерживает весь список методов (GET, POST, PUT, DELETE и многие другие), их можно выбрать из выпадающего списка.
- Введите URL API. Кликните в поле адреса (рядом с выбором метода) и впишите туда URL-адрес ресурса, к которому хотите обратиться. Например, для тестирования вы можете использовать адрес https://postman-echo.com/get (специальный сервис, который возвращает все, что вы ему отправите) или реальный адрес API (в следующем разделе мы используем URL для получения погоды). Важно: убедитесь, что URL начинаются с http:// или https:// и являются правильными адресами API.
- Отправьте запрос. Нажмите большую синюю кнопку Send (Отправить). Postman выполнит ваш запрос: подключится к указанному серверу и получит от него ответ (или сообщение об ошибке, если что-то пошло не так).
- Посмотрите результат. В нижней части окна Postman, в разделе Response (Ответ), появится то, что вернул сервер. Здесь будет отображен код состояния HTTP (например, 200 OK означает успешный ответ), заголовки и тело ответа. Если ответ в формате JSON, на вкладке Body Postman покажет его текст. По умолчанию включен режим отображения Pretty, который красиво форматирует JSON для удобного чтения. Вы сможете развернуть вложенные объекты, посмотреть массивы данных и т.д. Например, если запрос успешен, вы увидите код 200 и данные, которые запрашивали.
- (Необязательный шаг) При необходимости – укажите параметры или тело запроса. Если вы вызываете GET и нужно передать параметры (например, ?key=value в URL), вы можете воспользоваться вкладкой Params под полем URL в Postman – там удобно вводить пары «ключ-значение», и Postman сам добавит их в адрес. Для POST/PUT запросов, где нужно отправлять данные в теле (Body), можно переключиться на вкладку Body и ввести JSON или форму. Но для базовых проб этих деталей можно не касаться.
По сути, Postman позволяет вручную делать все то, что делают программы при обмене по API. Он очень полезен, чтобы протестировать и отладить ваш REST API: вы можете экспериментировать с разными запросами, видеть мгновенно ответы, менять параметры и выяснять, правильно ли работает сервер.
Реальный пример использования REST API (получаем данные о погоде)
Рассмотрим теперь конкретный пример, объединяющий все вышесказанное. Допустим, вы хотите создать простое приложение или виджет, который показывает погоду в вашем городе. Конечно, вы не будете сами измерять погоду – вместо этого можно воспользоваться открытым погодным REST API, который предоставит свежие данные.
Существует множество сервисов с погодными API. Некоторые требуют API-ключ (это как персональный пароль для доступа к их данным), но есть и бесплатные открытые варианты. В нашем примере воспользуемся API Open-Meteo – это открытый бесплатный API погоды, для которого не требуется ключ или регистрация open-meteo.com. Данные доступны по всему миру, нужно лишь указать интересующие координаты или город.
Что предоставляет Open-Meteo: по определенному URL этот сервис возвращает прогноз погоды (или текущую погоду) в формате JSON. Нам достаточно отправить GET-запрос на их адрес с нужными параметрами – и получить ответ. Например, возьмем координаты Берлина (широта 52.52, долгота 13.41) и запросим текущую погоду и температуру по часам. URL для такого запроса выглядит так:
https://api.open-meteo.com/v1/forecast?latitude=52.52&longitude=13.41¤t_weather=true&hourly=temperature_2m,wind_speed_10m
Разберем этот адрес: здесь v1/forecast – путь к ресурсу прогноза, latitude и longitude задают географическое положение, current_weather=true просит вернуть текущие показания, а параметр hourly= перечисляет, какие именно почасовые данные нам нужны (температура на 2 метрах и скорость ветра на 10 метрах). Мы используем метод GET для этого запроса, поскольку хотим получить информацию, не создавая ничего нового на сервере.
Отправим этот запрос. Если вы подставите этот URL в браузер или в Postman и нажмете Send, сервис Open-Meteo вернет вам JSON с погодными данными. Пример фрагмента ответа (отформатирован для наглядности):
{
"latitude": 52.52,
"longitude": 13.41,
"generationtime_ms": 0.32,
"utc_offset_seconds": 0,
"timezone": "GMT",
"current_weather": {
"temperature": 2.4,
"wind_speed": 11.9,
"weathercode": 3,
"time": "2022-01-01T15:00:00"
},
"hourly": {
"time": ["2022-01-01T15:00:00", "2022-01-01T16:00:00", ...],
"temperature_2m": [2.4, 2.1, ...],
"wind_speed_10m": [11.9, 10.5, ...]
}
}
В полученном JSON можно увидеть, например, что "temperature": 2.4 (вероятно, в градусах Цельсия) и "wind_speed": 11.9 (м/с) для текущей погоды. Массивы в разделе hourly содержат почасовые данные (здесь показаны первые пару значений). Ваше приложение могло бы взять эти данные и, скажем, отобразить: “Сейчас в Берлине +2.4°C, ветер 11.9 м/с.” или построить график изменения температуры по часам.
Таким образом, на практике все сводится к следующему: клиентское приложение делает GET-запрос к определенному URL (в соответствии с документацией REST API сервиса) – сервер возвращает данные в понятном формате – приложение обрабатывает и показывает эти данные пользователю. REST API обеспечивает стандартный, понятный способ такого взаимодействия.
Можно протестировать и другие города или показатели, изменив параметры URL (например, latitude/longitude для вашего города). Если вы используете Postman, просто подставьте нужный URL и нажмите Send – вы увидите подобный JSON в ответе. В реальной разработке, конечно, запросы выполняются кодом (например, с помощью fetch в JavaScript или axios, requests в Python и т.д.), но принцип остается тем же.
Итог: REST API – мощный и при этом интуитивно понятный подход для взаимодействия между программами через интернет. Зная базовые принципы (ресурсы, методы GET/POST/PUT/DELETE, формат данных) и умея пользоваться инструментами вроде Postman, вы можете как интегрировать чужие сервисы в свои приложения (потреблять API), так и предоставлять собственный API другим. Надеемся, что приведенные аналогии – официант в ресторане для понимания API, библиотека для методов запросов, и практический пример с погодой – помогли вам разобраться, что такое REST API и как он работает. Теперь, даже не будучи программистом, вы знаете, что происходит за кулисами многих онлайн-сервисов, когда они обмениваются данными друг с другом!